我知道我可以通过运行程序查看行号并调用“where”或“bt”来查看当前停止的行。但是这个行号以十六进制形式表示,这意味着它是基于机器的行号。如何从此号码中获取源代码中的行号。例如,当前行号看起来像这样;
(gdb) where
#0 0x0000000000404a9d in ex ()
#1 0x0000000000404b63 in ex ()
#2 0x0000000000404369 in ex_wrap ()
#3 0x0000000000403259 in yyparse ()
#4 0x00000000004042ff in main ()
我想要......
line 55 in the file "foo.c":blablalba
答案 0 :(得分:0)
但此行号以十六进制形式表示,这意味着它是基于机器的行号。
没有“基于机器的行号”这样的东西。数字是一个数字,无论是以十六进制,十进制还是八进制表示。
您看到的十六进制数字根本不是行号;这些是程序计数器的值(也称为机器地址)。
您没有看到文件/行信息的原因是您编译或链接了没有-g
标志的代码,或者您(可能不小心)剥离了调试信息(“迷路”{{1}在链接线上是一个常见的原因)。