Qt软件调试技巧

     2023-02-17     204

关键词:

【中文标题】Qt软件调试技巧【英文标题】:Qt software debugging techniques 【发布时间】:2019-02-21 20:00:26 【问题描述】:

我有应用程序发布到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

在调试应用程序时,我没有遇到任何崩溃。问题是如何通过堆栈跟踪获取代码中的崩溃位置或函数行/名称?有任何想法吗?谢谢。

【问题讨论】:

1) 使用调试符号构建您的代码。 2) 确保你说调试符号可用。 @JesperJuhl 嗨!你说的选项2是什么意思?我有项目 .pdb 文件。 堆栈跟踪仅指向 Qt 函数。是否完整?你的代码函数在哪里? @vahancho 嗨!它没有显示我的任何代码功能。如果我知道函数名称,那么在这里创建主题就没有意义了。谢谢。 【参考方案1】:

十六进制看起来像一些偏移量,可能从函数开始,因为它们很小。您可以下载并编译 dia2dump 实用程序(它也在 VS 示例中的某个位置),它可以转储大量有关调试符号的信息,包括每个偏移量的行号。所以你会知道堆栈的行号。

请注意,您需要 Qt 的 pdb,而不是您的程序的 pdb,才能调查此堆栈。

【讨论】:

【参考方案2】:

我认为问题在于即时创建/销毁程序图标,DestroyIcon 销毁了正在使用的句柄。

我添加了一些改进,现在它只创建了HICONQPixmap 的1 个对象,然后附加到循环中的结构,循环退出后它调用DestroyIcon 函数来销毁HICON 句柄。

我还发现了这篇关于从 Microsoft Store 中查找错误的文章: How to get a crash dump (or any usable crash report) for a converted Windows Store UWP app?

但我也会尝试StackWalker 应用程序来检查其他问题。谢谢。

【讨论】:

qt界面程序调试器:gammaray介绍

软件简介GammaRay是一个允许你查看Qt应用程序甚至在某种程度上修改它的独特应用,可谓是Debugger的良好补充。由KDAB开发的用于Qt应用程序的软件自检工具。利用QObject自省机制,可以在运行的过程当中去注入qt应用程序,实... 查看详情

c++(qt)软件调试---编译器及编译参数学习(代码片段)

C++(Qt)软件调试—编译器及编译参数学习(4)文章目录C++(Qt)软件调试---编译器及编译参数学习(4)1、前言1.1编译器参数有什么用1.2学C++软件调试为什么要先学编译器参数1.3C++程序异常调试... 查看详情

qt开发经验小技巧181-185(代码片段)

...如果是sudo-i切换后会改变当前目录。aptinstallg++安装软件包(要管理员权限) 查看详情

lua-调试技巧(代码片段)

title:lua-调试技巧categories:Luatags:[lua,调试,技巧]date:2022-07-1416:31:27comments:falsemathjax:truetoc:truelua-调试技巧前篇游戏lua脚本调试技巧,达到修改逻辑脚本后能实时生效执行,提高开发效率pc端editor模式新建一个测试代码脚本gDebugCustom=gD... 查看详情

lua-调试技巧(代码片段)

title:lua-调试技巧categories:Luatags:[lua,调试,技巧]date:2022-07-1416:31:27comments:falsemathjax:truetoc:truelua-调试技巧前篇游戏lua脚本调试技巧,达到修改逻辑脚本后能实时生效执行,提高开发效率pc端editor模式新建一个测试代码脚本gDebugCustom=gD... 查看详情

lua-调试技巧(代码片段)

title:lua-调试技巧categories:Luatags:[lua,调试,技巧]date:2022-07-1416:31:27comments:falsemathjax:truetoc:truelua-调试技巧前篇游戏lua脚本调试技巧,达到修改逻辑脚本后能实时生效执行,提高开发效率pc端editor模式新建一个测试代码脚本gDebugCustom=gD... 查看详情

chrome调试折腾记_js断点调试技巧

JS调试技巧技巧一:格式化压缩代码技巧二:快速跳转到某个断点的位置右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟checkbox同一行的会暂时取消这个断点,若是点击checkbox下一行的会直接跳转到该断点的位置技巧三... 查看详情

delphi调试技巧

...你才能分析出来错误原因,比如以前我写过一个视频播放软件里面有上百个过滤器你也不知道是哪个过滤器出错导致无法播放,这个时候你要是设断点的话调一天你也调不出来,这个时候就要自己写这种错误记录器了。参考技术... 查看详情

androidstudio掌握这些调试技巧,debug能力不能再高啦(代码片段)

...og.csdn.net/growing_tree/article/details/52168485Debug断点跟踪调试是软件开发过程中分析代码、解决BUG的一个重要手段,不同IDE下的Debug工具的使用有所不同,但提供的调试功能一定是应有尽有。很多程序员的Debug能力都停留在基本... 查看详情

wkwebview和uiwebview调试技巧

...,把mac和手机通过数据线连接,在手机上打开需要调试的软件。注意iphone不能锁屏)自动弹出下图:但是这还没有看到网页源码,我们需要【开发】->【xxx的iphone】->【Title】勾选 如下图:然后弹出如下图:看到上面的图... 查看详情

Python调试技巧[关闭]

】Python调试技巧[关闭]【英文标题】:Pythondebuggingtips[closed]【发布时间】:2010-12-1000:45:07【问题描述】:调试Python的最佳技巧是什么?请不要只列出一个特定的调试器而不说它实际上可以做什么。相关WhataregoodwaystomakemyPythoncoderunf... 查看详情

《有趣的二进制:软件安全与逆向分析》读书笔记:自由控制程序运行方式的编程技巧(代码片段)

目录前言一、调试器1、调试器是怎样工作的2、实现反汇编功能3、运行改良版调试器二、代码注入1、用SetWindowsHookEx劫持系统消息2、将DLL路径配置到注册表的AppInit_DLLs项3、通过CreateRemoteThread在其他进程中创建线程4、CreateRemoteThre... 查看详情

《有趣的二进制:软件安全与逆向分析》读书笔记:自由控制程序运行方式的编程技巧(代码片段)

目录前言一、调试器1、调试器是怎样工作的2、实现反汇编功能3、运行改良版调试器二、代码注入1、用SetWindowsHookEx劫持系统消息2、将DLL路径配置到注册表的AppInit_DLLs项3、通过CreateRemoteThread在其他进程中创建线程4、CreateRemoteThre... 查看详情

javascript调试技巧

...ugger;’除了console.log,debugger;是我们最喜欢、快速且肮脏的调试工具。一旦执行到这行代码,Chrome会在执行时自动停止。你甚至可以使用条件语句加上判断,这样可以只在你需要的时候运行。愚人码头注:本人实在觉得这种调试方... 查看详情

调试.方便调试的技巧_01

1、例子代码:(VC6.0sp4)#include<stdio.h>#defineMAX(a,b)((a)>(b)?(a):(b))#defineM01()\__try{#defineM02()}__finally{#defineM03()}voidmain(){M01()inti=MAX(3,5);printf("AAA,i:%d ",i);return;printf(" 查看详情

继续分享5个实用的vs调试技巧(代码片段)

继续分享5个实用的vs调试技巧原总结调试vs2019vs前言我在上一篇文章《5个非常实用的vs调试技巧》中分享了5个我认为非常值得了解的vs调试技巧,本周继续分享5个很基础但同样实用的调试技巧。1.条件断点作用简介:顾名思义,... 查看详情

lua-调试技巧(代码片段)

title:lua-调试技巧categories:Luatags:[lua,调试,技巧]date:2022-07-1416:31:27comments:falsemathjax:truetoc:truelua-调试技巧前篇游戏lua脚本调试技巧,达到修改逻辑脚本后能实时生效执行,提高开发效率pc端editor模式新建一个测试代码脚本gDebugCustom=gD... 查看详情

什么是最佳的通用调试技巧?

】什么是最佳的通用调试技巧?【英文标题】:Whatarethebestgeneralpracticedebuggingtricks?【发布时间】:2011-05-2706:54:33【问题描述】:什么是最佳的常规调试技巧?不是与特定平台、语言等相关联的那些,而是那些你发现你使用的那些... 查看详情