首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以从gtkmm和glibmm运行时诊断消息中获取行号或堆栈跟踪吗?

我可以从gtkmm和glibmm运行时诊断消息中获取行号或堆栈跟踪吗?
EN

Stack Overflow用户
提问于 2021-11-24 09:31:13
回答 1查看 23关注 0票数 0

我正在使用gtkmm和glibmm编写一个玩具程序,这是GTK和Glib的C++绑定。我收到一些运行时诊断消息。它们看起来像这样:

代码语言:javascript
复制
(process:2933): GLib-GObject-CRITICAL **: 16:19:16.920: g_object_set_qdata_full: assertion 'quark > 0' failed

大多数情况下,标题格式已经包含了pid和文件名。但是,我也希望看到相应源代码的行号。有可能吗?

请不要将此理解为X-Y问题的形式,或者不要固定在特定的消息上。因为我经常会遇到--并最终设法修复--很多这样的问题。

EN

回答 1

Stack Overflow用户

发布于 2021-11-24 11:39:13

正如中所说的,将env G_DEBUG设置为包含“致命警告”或“致命临界”将允许程序在遇到此类诊断时发出信号SIGTRAP。在调试器中捕获此信号可能有助于查看堆栈等。

示例用法:

代码语言:javascript
复制
# to dump stack upon first critical diagnostic and quit
G_DEBUG=fatal-criticals gdb -batch -ex "run" -ex "i stack" ./a.out

# or upon first and second critical and or warning diagnostic whichever comes earlier
G_DEBUG=fatal-warnings gdb -batch -ex "run" -ex "i stack" -ex "cont" -ex "i stack" ./a.out
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70093633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档