我知道我可以通过运行程序看到行号,并调用"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发布于 2013-12-01 00:15:47
但是这个行号是以十六进制形式表示的,这意味着它是一个基于机器的行号。
没有“基于机器的行号”这样的东西。数字是一个数字,无论是用十六进制、十进制还是八进制来表示。
您所看到的十六进制数字根本不是行号;它们是程序计数器(也就是计算机地址)的值。
您没有看到文件/行信息的原因是您编译或链接了没有-g标志的代码,或者您(可能是意外地)删除了调试信息(链接行上的“偏离”-s是常见的原因)。
https://stackoverflow.com/questions/20304074
复制相似问题