我只是简单地使用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/kevinsanchez/epeace/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)
答案 0 :(得分:3)
任何人都知道出了什么问题?
在调试使用优化构建的程序时,您所描述的症状非常:编译器重新排列代码,使得来自不同行的指令混合在一起。
确保编译时没有任何-O
标记,或在编译行末尾添加-O0
。
这是make文件的一部分:
CC = gcc
CFLAGS = -g -O2
这样做:删除-O2
,你的调试会更容易。