Linux/C++ 如何调试发布应用程序

2024-01-02

我有 linux c++ 多线程应用程序。现在它已经在生产服务器上进行了测试并且出现了段错误。问题是我无法在任何测试服务器上重现该错误,并且无法访问生产服务器。我没有转储或任何其他有用的信息。仅行: 段错误位于 0000000046bf0fb8 rip 000000000048ac6b rsp 0000000046bf0fa0 错误 6

我想问社区我可以从这样的线路中获得一些信息,这将有助于减少我应该搜索的可能位置的面积。由于速度慢,我无法在生产环境中运行调试构建。我可以在版本中添加什么来帮助我调试?这个错误看起来像多线程错误,并且很难重现。但我不确定,因为应用程序可以处理来自 MTA 的许多不同电子邮件。

平台:Linux

编译器行:g++ -O3 -D_REENTRANT

谢谢。

更新:谢谢您的回答。我可以包含调试信息。我想知道调试发布版本的基本方法。例如我有转储和发布版本。我该如何继续。我应该读什么?如果可能的话,您能用几句话解释一下如何调试您的应用程序吗?谢谢。


正如安迪提到的,在构建发布版本时保留调试符号。

如果这使得完成的可执行文件的大小大得无法接受,那么您可以复制最终的可执行文件并运行它strip删除调试符号。这样你就有了two可执行文件完全相同,只是一个具有调试符号而另一个没有。将没有符号的放在生产服务器上。当出现段错误时,针对仍包含调试符号的可执行文件的副本进行调试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux/C++ 如何调试发布应用程序 的相关文章

随机推荐

  • Windows UI 自动化无法识别按钮控件

    我在尝试通过以下方式识别时遇到问题Windows 用户界面自动化里面的按钮控件通知区窗口 类名 工具栏Window32 我通过验证Windows 用户界面自动化部署在的工具视窗软件开发工具包这些 图标 是类型控件ControlType Bu
  • Cocoa Pods 错误 ld:找不到 -lPods 的库

    我从可可豆荚中收到了以前从未见过的错误 我已经让它与几个依赖项一起工作得很好 我最近通过 pod 添加了 TestFlightSDK 作为依赖项 但无法存档该项目 它可以很好地适应设备 但拒绝存档 还有其他人遇到过这个问题吗 ld libr
  • 将 Jersey JUL 日志记录重定向到 Log4j2

    我需要将 Jersey 请求 响应日志重定向到我的 log4j2 我通过在我的设备上使用此代码启用了 Jersey 日志记录ApplicationJAXRS extends Application Override public Set
  • 为什么使用 Atlassian Crowd [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想了解 Atlassian 人群通过 LDAP 服务器做什么 看起来大多数 Atlassian 产品都允许您指向 Atlassian 服务器进行授权
  • 停止quartz调试日志记录log4j

    我一直试图关闭令人讨厌的石英调试日志记录 我正在使用 log4j 作为日志记录框架 并且我已经尝试将此行添加到 lg4j 属性文件中 log4j logger org quartz ERROR 我仍然收到大量这些调试日志消息 13 35 4
  • Android 联系人 RAW_CONTACT_ID 与 CONTACT_ID

    我正在使用联系人选择器 如下所示 Intent contactPickerIntent new Intent Intent ACTION PICK Contacts CONTENT URI startActivityForResult co
  • 将多个 PNG 制作成一个 ICO 文件 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 使用 Windows ICO 文件 您可以将多个不同大小的图像打包到同一个 ICO 文件中 然后 Win
  • 多风格设置中的 Android Gradle 1.0 计算版本代码

    计算不同产品风格的版本代码的代码不再在 Android Gradle 1 0 系统中运行 我之前成功地使用了下面的示例代码 http tools android com tech docs new build system tips TOC
  • 如何从 .m 文件创建可执行的 .exe 文件

    我想知道是否有一种方法可以在 MATLAB 中从 m 文件创建 exe 文件 这样它就可以在没有 MATLAB 的机器上运行 就像可以在 C C 中完成一样 我知道编写 MATLAB 函数是一种方法 但我不确定它是否可以在没有 MATLAB
  • JavaScript inflate 实现(可能仅限 FF 3.6)

    我正在编写一些在 FireFox 3 6 中使用 HTML 5 文件 API 的脚本 我有一些放气 压缩 的文件 我需要对它们进行充气 解压缩 我找到了一个few http www codeproject com KB scripting
  • 英特尔 XDK 中的 res/drawable 文件

    xdk中有没有办法将文件传输到android res drawable文件夹 我有以下文件 src android drawable noti icon png www src android drawable noti icon png
  • 长时间关闭时如何处理servlet请求

    我们需要在 Servlet 应用程序中实现优雅的关闭机制 编辑 我们希望使其尽可能简单 这将处理通过操作系统功能发送的终止信号 这将允许系统管理员使用内置的 shell 实用程序 Windows 上的kill 或taskkill 否则他们必
  • 反应本机保存屏幕到图像问题(react-native-view-shot 模块)

    我想得到反应本机视图镜头 https github com gre react native view shot工作 但我认为模块和我安装的 React Native 工具版本存在某种不兼容性 这阻碍了我的工作 核心问题似乎在于这段代码 i
  • 如何配置 OpenSL 来录制语音通话

    我正在使用 MediaRecorder 开发通话录音应用程序语音通话音频源 在某些棉花糖设备中它崩溃了 然后我将源更改为MIC这里传入的声音没有被记录 由于java的限制 现在我正在研究原生android代码来录制语音通话 我设法使用录制音
  • python 不被识别为内部或外部命令[重复]

    这个问题在这里已经有答案了 我尝试安装this https github com joyent node wiki Installation软件 为此需要Python 我从以下位置安装了Pythonhere http python org
  • PHP 中的随机 ID/数字生成器

    我正在我的数据库中构建一个 代理 ID 列表 满足以下要求 ID 长度必须为 9 位 仅限数字 ID 中的相同数字不得超过 3 个 ID 不能包含超过 2 个连续的相同数字 即 887766551 不能有 888 到目前为止 我已经完成了第
  • 在 Python 中将数据添加到嵌套列表

    我有一个嵌套列表 例如 nlist 1 2 3 4 5 6 7 8 9 在将此列表插入数据库之前 我想向其中添加一个 列 并在新列的每一行中具有相同的值 例如 nlist a 1 2 3 a 4 5 6 a 7 8 9 例如 当原始嵌套列表
  • MVC 4 Web API 帖子

    我想从远程客户端进行插入 因为我需要通过 http 发送数据 我可以使用getPerformances 正确地与httpClient api performances date 0 我想问一下我的postPorformances 我内部的实
  • ProcessBuilder 和 Runtime.exec() 之间的区别

    我正在尝试从 java 代码执行外部命令 但我注意到两者之间存在差异Runtime getRuntime exec and new ProcessBuilder start 使用时Runtime Process p Runtime getR
  • Linux/C++ 如何调试发布应用程序

    我有 linux c 多线程应用程序 现在它已经在生产服务器上进行了测试并且出现了段错误 问题是我无法在任何测试服务器上重现该错误 并且无法访问生产服务器 我没有转储或任何其他有用的信息 仅行 段错误位于 0000000046bf0fb8