【问题标题】:Single stepping until exit from function main, which has no line number information单步执行直到从没有行号信息的函数 main 中退出
【发布时间】:2020-04-10 17:43:45
【问题描述】:

我在 stackoverflow 上看到过类似的帖子

Why am I getting the message "Single-stepping until exit . . . which has no line number information" in GDB?

当接受的答案不能解决我的问题时。

我所做的是在主函数设置断点

(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.”表示“文件或目录不存在”

可能是什么问题?

  • 似乎缺少某些东西,是不是这个原因 - 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.

【问题讨论】:

  • -g 编译选项添加到您的CFLAGS。它在您的链接命令行上没有多大用处。
  • @FredLarson - 谢谢你解决了问题:)
  • 好!我根据我的评论做出了回答。

标签: c debugging gdb


【解决方案1】:

似乎正在发生的事情是您的文件正在使用隐式规则进行编译,然后使用您指定的规则链接目标文件。由于您的 -g 选项在链接命令上,而不是在编译命令上,所以为时已晚。编译已经完成,没有调试信息。

相反,将-g 选项添加到您的CFLAGS 符号。这在隐式规则中使用,因此源文件将使用调试信息进行编译。链接不需要该选项(编译或链接都不需要-I.)。

  CC=gcc
  CFLAGS= -g
  printprog: main.o print.o 
      $(CC) -o printprog main.o print.o

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多