单步执行直到退出没有行号信息的函数 main
Single stepping until exit from function main, which has no line number information
我在 Whosebug 上看到过类似的帖子
Why am I getting the message "Single-stepping until exit . . . which has no line number information" in GDB?
目前接受的答案并没有解决我的问题。
我做的是在main-function设置断点
(gdb) break main
Breakpoint 1 at 0x6fe
(gdb) run
Starting program: /home/bjorn/printprog
Breakpoint 1, 0x00005555555546fe in main ()
(gdb)
到目前为止,天哪,但是当我开始踩踏时,我得到以下信息:
(gdb) s
Single stepping until exit from function main,
which has no line number information.
hell world!!!!
Number of characters in the string are 14
__libc_start_main (main=0x5555555546fa <main>, argc=1, argv=0x7fffffffdef8, init=<optimized
out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffdee8) at ../csu/libc-start.c:344
344 ../csu/libc-start.c: Filen eller katalogen finns inte.
"Filen eller katalogen finns inte." 表示 "the file or catalog does not exist"
可能是什么问题?
好像少了什么,是这个原因吗-start.c,我需要那个文件吗?
gcc 和 gdb 的版本不同吗?
GDB
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
海湾合作委员会
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
- 或者是我的 makefile 有误或遗漏了什么?
生成文件
CC=gcc
CFLAGS=-I.
printprog: main.o print.o
$(CC) -g -o printprog main.o print.o -I.
似乎正在发生的事情是您的文件正在使用隐式规则编译,然后目标文件使用您指定的规则 linked。由于您的 -g
选项在 link 命令上,而不是编译命令上,所以为时已晚。编译已经完成,没有调试信息。
相反,将 -g
选项添加到您的 CFLAGS
符号。这在隐式规则中使用,因此源文件将使用调试信息进行编译。 linking 不需要该选项(编译或 linking 不需要 -I.
)。
CC=gcc
CFLAGS= -g
printprog: main.o print.o
$(CC) -o printprog main.o print.o
我在 Whosebug 上看到过类似的帖子
Why am I getting the message "Single-stepping until exit . . . which has no line number information" in GDB?
目前接受的答案并没有解决我的问题。
我做的是在main-function设置断点
(gdb) break main
Breakpoint 1 at 0x6fe
(gdb) run
Starting program: /home/bjorn/printprog
Breakpoint 1, 0x00005555555546fe in main ()
(gdb)
到目前为止,天哪,但是当我开始踩踏时,我得到以下信息:
(gdb) s
Single stepping until exit from function main,
which has no line number information.
hell world!!!!
Number of characters in the string are 14
__libc_start_main (main=0x5555555546fa <main>, argc=1, argv=0x7fffffffdef8, init=<optimized
out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffdee8) at ../csu/libc-start.c:344
344 ../csu/libc-start.c: Filen eller katalogen finns inte.
"Filen eller katalogen finns inte." 表示 "the file or catalog does not exist"
可能是什么问题?
好像少了什么,是这个原因吗-start.c,我需要那个文件吗?
gcc 和 gdb 的版本不同吗?
GDB
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
海湾合作委员会
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
- 或者是我的 makefile 有误或遗漏了什么?
生成文件
CC=gcc
CFLAGS=-I.
printprog: main.o print.o
$(CC) -g -o printprog main.o print.o -I.
似乎正在发生的事情是您的文件正在使用隐式规则编译,然后目标文件使用您指定的规则 linked。由于您的 -g
选项在 link 命令上,而不是编译命令上,所以为时已晚。编译已经完成,没有调试信息。
相反,将 -g
选项添加到您的 CFLAGS
符号。这在隐式规则中使用,因此源文件将使用调试信息进行编译。 linking 不需要该选项(编译或 linking 不需要 -I.
)。
CC=gcc
CFLAGS= -g
printprog: main.o print.o
$(CC) -o printprog main.o print.o