c++ - 使用 mingw730 32 位在 Qt 5.12 项目的发布版本中偏移到代码位置
问题描述
我有一个 Qt 项目,其中包含大量客户遗留代码库(很遗憾,我不能自由发布)。使用 qmake/QtCreator 调试构建,但发布构建甚至在点击 main 之前就崩溃了。我的怀疑是一些静态初始化。当我在 Qt Creator 中运行调试器时,我得到一个分段错误和一个反汇编跟踪。没有符号,没有真正可用的堆栈跟踪。关于如何解决这个问题的任何提示?我可以将发生崩溃的进程地址解析为代码中的符号吗?
编辑:反汇编如下所示:
0:000> u
ProgrammName+0x39b40:
00439b40 8b842468010000 mov eax,dword ptr [esp+168h]
00439b47 8384246801000004 add dword ptr [esp+168h],4
00439b4f 89fa mov edx,edi
00439b51 8b00 mov eax,dword ptr [eax]
00439b53 85c0 test eax,eax
00439b55 0f8461f6ffff je ProgrammName+0x391bc (004391bc)
00439b5b 85db test ebx,ebx
00439b5d 8d4801 lea ecx,[eax+1]
0:000> u
ProgrammName+0x39b60:
00439b60 0fb600 movzx eax,byte ptr [eax]
00439b63 0f8ef7000000 jle ProgrammName+0x39c60 (00439c60)
00439b69 84c0 test al,al
00439b6b 750d jne ProgrammName+0x39b7a (00439b7a)
00439b6d e9ee000000 jmp ProgrammName+0x39c60 (00439c60)
00439b72 84c0 test al,al
00439b74 0f8442f6ffff je ProgrammName+0x391bc (004391bc)
00439b7a 83eb01 sub ebx,1
我的想法是ProgramName+0xXXXX
地址应该以某种方式可以翻译成符号。
解决方案
好的,找到了解决方案:https ://forum.qt.io/topic/2363/solved-how-to-build-release-with-debug-info-mingw/4
基本上它是关于构建发布,但保留调试符号。我的 Qt 项目文件的补充是
QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CFLAGS_RELEASE += -g
QMAKE_LFLAGS_RELEASE =
推荐阅读
- python - Flask 404 未找到图像
- android - 关于我的服务器和客户端 android 应用程序中的套接字的问题
- uml - 企业服务总线 - UML 图
- android - 有时,打开的软键盘会在短时间内减少 WindowVisibleDisplayFrame 区域,而不是软键盘放置所需的区域
- reactjs - 在 React Native 中自动调整字体大小
- python - 从 tensorflow K 预测集群 id 意味着在保存和加载模型之后
- android - 如何对齐 MaterialButton 上左侧的文本和图标(文本后直接带有图标)?
- html - Angular:在同一个按钮上使用(单击)和 routerLink
- rust - Rust 工作区 - 默认排除所有包
- python - 没有 Celery 的烧瓶后台任务