отладка — точки останова C ++ игнорируются / пропускаются

Я пытаюсь запустить код C ++, который мне кто-то дал. Сначала была битая ссылка на istream файл, который я исправил, добавив путь включения:

C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\include\dinkumware

Теперь код компилируется, но не останавливается ни на каких точках останова, например, в formcreate:

// Initialise the form and read in the module and inverter names.
void __fastcall TMain::FormCreate(TObject *Sender)
{
ifstream inits;
ifstream inverters;
ifstream modules;
char line[1000];
AnsiString FTO;
inits.open("PVSM.ini", ios::in);
if (inits.is_open())
{
inits.getline(line,1000);
AnsiString parmm(line);
ModDir = parmm.SubString(1,parmm.Pos(" ")-1);
inits.getline(line,1000);
AnsiString parmi(line);
InvDir = parmi.SubString(1,parmi.Pos(" ")-1);
inits.getline(line,1000);
AnsiString parmt(line);
MetDir = parmt.SubString(1,parmt.Pos(" ")-1);
inits.getline(line,1000);
AnsiString parms(line);
ShdDir = parms.SubString(1,parms.Pos(" ")-1);
inits.getline(line,1000);
AnsiString parmx(line);
ExpDir = parmx.SubString(1,parmx.Pos(" ")-1);
}
else    // Should never get here, but if ini file missing use defaults
{
ModDir = "C://";
InvDir = "C://";
MetDir = "C://";
ShdDir = "C://";
}
inits.close();
FTO = InvDir + "inverters.data";
inverters.open(FTO.c_str(), ios::in);
if (inverters.is_open())
{
while ( inverters.getline(line,1000) )
{
AnsiString inverter(line);
IVBox->Items->Add(inverter);
}
}
inverters.close();
FTO = ModDir + "modules.data";
modules.open(FTO.c_str(), ios::in);
if (modules.is_open())
{
while ( modules.getline(line,1000) )
{
AnsiString module(line);
ModBox->Items->Add(module);
}
}
modules.close();
CMod = 1;
CStr = 1;
CCell = 1;
nStore = 0;
grid = true;
pasan = false;
debug = false;
calc = false;
cell = false;
module = false;
array1 = false;
inv = false;
PV = true;
Parray = false;
Pcurve = false;
LastType = 'X';
CurrTp = -1;  //* Not currently set
AllSame = true;
LdMeteo = false;
mpp = true;
}

Он просто открывает форму, как если бы он был запущен из .exe файл, кроме как показывает

Компиляция MyProject.cbproj (Выпуск конфигурации) …. Успех

в панели сообщений

Я попытался переключиться с выпуска на режим отладки, попытался изменить каталоги вывода, чтобы он компилировал новый .obj файлы. Нет успеха

я бегу Rad studio 2010, это было изначально написано в XE5, но я думаю, что это проблема структуры папок, а не версии IDE?

Какие-либо предложения?

1

Решение

Некоторые идеи (из разных источников), которые могут или не могут быть полезны для вас:

  • убедитесь, что вы используете Отладочная конфигурация и сделать строить проекта, а не просто компиляция: переключение обратно в отладочную конфигурацию и выполнение компиляции после сборки релиза недостаточно
  • в настройках вашего проекта для Win32 (Debug) убедитесь, что следующие параметры установлены на правильные значения

    • [Компилятор C ++] → [Отладка] → [Отладочная информация] = True;
    • [Компилятор C ++] → [Отладка] → [Информация о номере строки отладки] = True;
    • [C ++ Compiler] → [Оптимизации] → [Отключить все оптимизации] = True;
    • [Компилятор C ++] → [Оптимизации] → [Генерировать максимально быстрый код] = False;
    • [C ++ Linker] → [Полная информация отладки] = True;
    • [Delphi Compiler] → [Оптимизация] = False;
    • [Delphi Compiler] → [Использовать debug .dcus] = True;

    (например, шаблон конфигурации по умолчанию для MDI приложение не так)

  • удалить все .pch, .# а также .tds файлы и пусть компилятор воссоздает
  • если вы используете IDE в VirtualBox, учтите, что в некоторых версиях есть проблемы с точками останова (v4.3.x)

В крайнем случае вы можете попробовать { _asm { int 3 } } в симулировать точку останова.

Также взгляните на:

4

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector