我有 linux c++ 多线程应用程序。现在它已经在生产服务器上进行了测试并且出现了段错误。问题是我无法在任何测试服务器上重现该错误,并且无法访问生产服务器。我没有转储或任何其他有用的信息。仅行:
段错误位于 0000000046bf0fb8 rip 000000000048ac6b rsp 0000000046bf0fa0 错误 6
我想问社区我可以从这样的线路中获得一些信息,这将有助于减少我应该搜索的可能位置的面积。由于速度慢,我无法在生产环境中运行调试构建。我可以在版本中添加什么来帮助我调试?这个错误看起来像多线程错误,并且很难重现。但我不确定,因为应用程序可以处理来自 MTA 的许多不同电子邮件。
平台:Linux
编译器行:g++ -O3 -D_REENTRANT
谢谢。
更新:谢谢您的回答。我可以包含调试信息。我想知道调试发布版本的基本方法。例如我有转储和发布版本。我该如何继续。我应该读什么?如果可能的话,您能用几句话解释一下如何调试您的应用程序吗?谢谢。
正如安迪提到的,在构建发布版本时保留调试符号。
如果这使得完成的可执行文件的大小大得无法接受,那么您可以复制最终的可执行文件并运行它strip
删除调试符号。这样你就有了two可执行文件完全相同,只是一个具有调试符号而另一个没有。将没有符号的放在生产服务器上。当出现段错误时,针对仍包含调试符号的可执行文件的副本进行调试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)