gdb中的下一个命令工作不正常

gdb中的下一个命令工作不正常,gdb,next,Gdb,Next,我只是简单地使用gdb逐行遍历代码,以了解它是如何工作的以及它在做什么。我第一次这样做时,它工作得很好,但现在下一个命令工作不正常。有时向前,有时向后。这没有道理。每次我这样做,它似乎是相同的模式。下面是一个例子。有人知道怎么回事吗 注意:这是一台旧Mac电脑,有旧的程序版本(我没有更新的能力) 请说清楚。一般来说,我对linux和编程相当陌生 谢谢 Reading symbols for shared libraries ... done (gdb) b main Breakpoint 1 a

我只是简单地使用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) 
正在读取共享库的符号。。。完成
(gdb)b干管
0x2730处的断点1:file../../../../../../gcc-3.4.6/libf2c/libF77/pow_zi.c,第14行。
(gdb)r
启动程序:/Users/kevinsanchez/epeace/ConstU/main
正在读取共享库的符号+。完成
重新设置断点1时出错:
未定义函数“main”。
重新启用共享库断点:1
main.c:34处main()中的断点1 0x00002730
34      {
(gdb)n
main()位于main.c:42
42表示(i=0;i
有人知道怎么回事吗

在调试用优化构建的程序时,您所描述的症状非常常见:编译器以一种方式重新排列代码,使得来自不同行的指令混合在一起

确保编译时没有任何
-O
标志,或在编译行末尾添加
-O0

下面是make文件的一部分:
CC=gcc
CFLAGS=-g-O2

这样就可以了:删除
-O2
,调试就会容易得多

有人知道怎么回事吗

在调试用优化构建的程序时,您所描述的症状非常常见:编译器以一种方式重新排列代码,使得来自不同行的指令混合在一起

确保编译时没有任何
-O
标志,或在编译行末尾添加
-O0

下面是make文件的一部分:
CC=gcc
CFLAGS=-g-O2


这样就可以了:删除
-O2
,调试就会容易得多。

您使用了什么命令来编译正在执行的程序?抱歉,我不知道如何使其更可读,但我认为gcc-g-O2?下面是make文件的一部分:CC=gcc;CFLAGS=-g-O2;main.o:main.c;$(CC)$(CFLAGS)-c$您使用了什么命令来编译您正在执行的程序?抱歉,我不知道如何使其更具可读性,但我认为gcc-g-O2?这里是make文件的一部分:CC=gcc;CFLAGS=-g-O2;main.o:main.c;$(CC)$(CFLAGS)-c$它起作用了。奇怪的是……我查看了它,在手册中发现了这一行:“与大多数其他C编译器不同,GCC允许您将-g与-O一起使用。”谢谢!GCC允许您将
-g
-O
一起使用,从而使调试优化的代码成为可能。但这并不容易。它起作用了。奇怪的是……我在手册中找到了这一行:”与大多数其他C编译器不同,GCC允许您将-g与-O一起使用。“谢谢!GCC允许您将
-g
-O
一起使用,使调试优化的代码成为可能。但这并不容易。