gpt4 book ai didi

C++ 断点被忽略/遗漏

转载 作者:行者123 更新时间:2023-11-30 01:16:15 27 4
gpt4 key购买 nike

我正在尝试运行某人给我的一些 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 文件运行的一样,除了它显示

Compiling MyProject.cbproj (Release configuration).... Success

在消息栏中

我试过从 Release模式切换到 Debug模式,尝试更改输出目录以便编译新的 .obj 文件。没有成功。

我正在运行 Rad studio 2010,它最初是用 XE5 编写的,但我认为这是文件夹结构的问题,而不是 IDE 版本?

有什么建议吗?

最佳答案

一些想法(来自各种来源)可能对您有用,也可能对您没有用:

  • 确保您正在使用调试配置并对项目进行构建,而不仅仅是编译:切换回调试配置并在之后进行编译发布版本是不够的
  • 在您的 Win32(调试)项目选项中,确保将以下选项设置为正确的值

    • [C++ 编译器] → [调试] → [调试信息] = True;
    • [C++ 编译器] → [调试] → [调试行号信息] = True;
    • [C++ 编译器] → [优化] → [禁用所有优化] = True;
    • [C++ 编译器] → [优化] → [生成最快的代码] = False;
    • [C++ 链接器] → [完整调试信息] = True;
    • [Delphi 编译器] → [优化] = False;
    • [Delphi 编译器] → [使用 debug .dcus] = True;

    (例如 MDI 应用程序的 default configuration template 是错误的)

  • 删除所有.pch.#.tds文件,让编译器重新创建
  • 如果您在 VirtualBox 下运行 IDE,请考虑某些版本存在断点问题 (v4.3.x)

作为最后的手段,您可以尝试将 { _asm { int 3 } } 改为 simulate a breakpoint .

另请参阅:

关于C++ 断点被忽略/遗漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26999818/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com