我只是使用 gdb 逐行浏览代码,以了解它是如何工作的以及它在做什么。我第一次执行此操作时效果很好,但现在下一个命令无法正常工作。有时它前进,有时它倒退。这没有道理。每次我这样做时,似乎都是相同的模式。下面是一个例子。有人知道出了什么问题吗?
注意:这是一台旧Mac,程序版本旧(我无权更新)
请明确说明。我对 Linux 和一般编程相当陌生。
谢谢!
Reading symbols for shared libraries ... done
(gdb) b main
Breakpoint 1 at 0x2730: file ../../../../gcc-3.4.6/libf2c/libF77/pow_zi.c, line 14.
(gdb) r
Starting program: /Users/kevin/project/ConstU/main
nReading symbols for shared libraries +. done
Error in re-setting breakpoint 1:
Function "main" not defined.
Re-enabling shared library breakpoints: 1
Breakpoint 1, 0x00002730 in main () at main.c:34
34 {
(gdb) n
main () at main.c:42
42 for (i=0;i<DpDIM;i++) {
(gdb) n
34 {
(gdb) n
35 runstart=clock();
(gdb) n
39 Init=ReadInit(&CaseDim);/*reads in initial valies from initfile*/
(gdb) n
35 runstart=clock();
(gdb) n
39 Init=ReadInit(&CaseDim);/*reads in initial valies from initfile*/
(gdb)
Run Code Online (Sandbox Code Playgroud)
有人知道出了什么问题吗?
您所描述的症状在调试通过优化构建的程序时非常常见:编译器以不同行的指令混合的方式重新排列代码。
确保编译时不带任何-O标志,或-O0在编译行末尾添加。
这是 make 文件的一部分:
CC = gccCFLAGS = -g -O2
这样就可以了:删除它-O2,你的调试就会变得更加容易。