C 如何通过查看可执行警告消息找到源函数调用?

C 如何通过查看可执行警告消息找到源函数调用?,c,debugging,gdb,C,Debugging,Gdb,我运行可执行文件时出错: (a.out:6815): GooCanvas-CRITICAL **: goo_canvas_item_get_parent: assertion `GOO_IS_CANVAS_ITEM (item)' failed 我想找出哪个函数调用导致了这个警告(因为我没有调用上面的函数),我试着用gdb运行,但没有显示源代码行?我在编译时包含了-g。谢谢。尝试向您的环境中添加G\u DEBUG=fatal\u critical。这样,当出现严重错误时,您的程序将中止(),因

我运行可执行文件时出错:

(a.out:6815): GooCanvas-CRITICAL **: goo_canvas_item_get_parent: assertion `GOO_IS_CANVAS_ITEM (item)' failed

我想找出哪个函数调用导致了这个警告(因为我没有调用上面的函数),我试着用gdb运行,但没有显示源代码行?我在编译时包含了
-g
。谢谢。

尝试向您的环境中添加
G\u DEBUG=fatal\u critical
。这样,当出现严重错误时,您的程序将中止(),因此您的gdb可以向您指出断言失败的地方


或者在
g\u critical
函数中添加断点。

您必须使用
-g
进行编译,以便将调试信息嵌入到可执行文件中。如果没有它,调试器(和其他源代码级工具)将无法找到给定地址的代码行。@hristoilev我在放置-g,如何在gdh中找到
a.out:2815
指向的内容?我没有看到任何2815,但我认为6815可能只是一个PID。