微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取堆栈跟踪信息?

如何解决如何获取堆栈跟踪信息?

| 我正在使用epoll在linux机器上进行服务器编程,并且调试有问题。现在,我已经在各处放置了日志语句。它有助于查看何时爆炸,但很难理解原因。 所以我想知道是否有一种方法可以在C ++中打印堆栈跟踪或更多信息。 提前致谢... 编辑: 我在mu make文件中设置了-g,如果我在GDB上运行服务器,它将不会收到任何数据包。我不知道为什么,但是如果我在命令行上运行它会接收数据包,但是如果我在GDB上运行它就不会从客户端收到任何信息(我看不到任何日志语句)     

解决方法

        尝试Glibc中的
backtrace
函数。     ,        您可以使用
gdb
调试器运行程序。 如果您使用的是gcc,则必须使用
-g
或其他调试标志对其进行重新编译。 因此,您的exe包含有关程序的更多信息。     ,        如果您的程序可以检测到何时崩溃,则可以潜在地写出脚本并在其上启动GDB。然后,该脚本可以使GDB打印回溯。 根据所需的信息,查看
/proc/<pid>/stack
可能会有所帮助。     ,        我使用的是GLIBC的backtrace(),它的效果很好(可以使用UDP协议通过网络另外收集backtrace): http://blog.aplikacja.info/2010/12/backtraces-for-c/     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。