C++Builder 12.1 CE调试器StepOver(F8)异常如何解决?
解决C++Builder 12.1 CE中Step Over(F8)意外进入函数实现的问题
针对你遇到的F8(Step Over)跳过代码时意外进入UnicodeString::Pos这类系统函数实现的问题,可以通过以下几个步骤解决:
开启"跳过系统代码"调试器设置
打开Tools > Options > Debugger > General,勾选Skip System Code选项,同时确保Enable Debugging of System Code处于未勾选状态。这个设置会让调试器自动忽略VCL/RTL的系统代码实现,只在用户编写的代码间单步跳转。检查项目调试信息配置
- 进入
Project > Options > C++ Compiler > Debugging,将Debug information设置为DWARF with separate .dwo files(C++Builder 12推荐的调试格式); - 切换到
Linker > Debugging,确认Include debug information已勾选,保证调试符号正确生成,让调试器能准确区分用户代码和系统代码边界。
- 进入
添加函数到调试跳过列表
如果个别系统函数仍被意外进入,可以:- 调试时右键点击调用的函数(比如
Pos),选择Add to Skip List; - 或者手动在
Tools > Options > Debugger > Skip List中添加函数全名,例如System::UnicodeString::Pos,后续F8会自动跳过该函数的实现。
- 调试时右键点击调用的函数(比如
清理重建项目
执行Project > Clean清除旧的编译产物和调试符号,然后选择Project > Rebuild重新生成项目,避免旧符号导致的调试异常。调整RTL链接方式
打开Project > Options > Packages > Runtime Packages,如果勾选了Link with runtime packages,确保对应的RTL包带有正确调试符号;若不需要动态包,可取消勾选改为静态链接RTL,能减少调试器误进入系统代码的情况。
内容的提问来源于stack exchange,提问作者Claude Smith
相关产品推荐
相关产品推荐

