我有发布到Microsoft Store
的应用程序,位于Dev center
中该应用程序的运行状况页面下,它报告崩溃问题:
fail_fast_fatal_app_exit_c0000409_qt5core.dll!qt_logging_to_console
并跟踪堆栈:
0 ucrtbase.dll abort 0x000000000000004E
1 Qt5Core.dll qt_logging_to_console 0x000000000000017A
2 Qt5Core.dll QMessageLogger::fatal 0x0000000000000093
3 Qt5Gui.dll QPixmap::paintEngine 0x0000000000000052
4 Qt5Gui.dll QPixmap::QPixmap 0x0000000000000037
在调试应用程序时,我不会崩溃。问题是如何通过堆栈跟踪在代码中获取崩溃位置或功能行/名称?有任何想法吗?谢谢。
答案 0 :(得分:1)
十六进制看起来像一些偏移量,可能是从函数开始时的偏移量,因为它们很小。您可以下载并编译dia2dump实用程序(它也是VS示例中的某个位置),该实用程序可以转储很多有关调试符号的信息,包括每个偏移量的行号。这样您就知道堆栈的行号。
PS请注意,要研究此堆栈,您需要Qt的pdb,而不是程序的pdb。
答案 1 :(得分:0)
我认为问题出在程序图标的动态创建/销毁和DestroyIcon
破坏了正在使用的句柄。
我添加了一些改进,现在它仅创建了HICON
和QPixmap
的1个对象,然后追加到循环中的结构中,并在循环退出后调用DestroyIcon
函数来销毁HICON
句柄。
我也找到了有关从Microsoft Store查找错误的文章: How to get a crash dump (or any usable crash report) for a converted Windows Store UWP app?
但是我还要尝试StackWalker
应用程序来检查其他问题。谢谢。