首页 > 其他分享 >Qt 软件调试——windbg初篇(一)

Qt 软件调试——windbg初篇(一)

时间:2024-12-27 12:21:58浏览次数:3  
标签:Qt int 初篇 设置 断点 调试 windbg

https://blog.csdn.net/weixin_39568531/article/details/134787829

 

在上一篇《Qt 软件调试(二)使用dump捕获崩溃信息》中我们结尾处提示大家先准备好windbg,windbg是非常强大的调试工具,对于我们进行代码调试和分析异常有着非常重要的意义。
在Qt软件调试这个系列的首篇,我们介绍了《Qt 软件调试(一) Log日志调试》,日志在调试过程中一般用于错误的粗定位,若是碰上复杂问题导致的崩溃,日志往往也爱莫能助。
但是,当我们掌握了windbg神器,那么对于异常问题点方可做到精确定位,指哪打哪。本下列笔者将和小伙伴们一起学习、沉淀,一起精进。

一、windbg入门简单示例
1.1 代码示例
// Demo1.cpp
#include <iostream>
#include <windows.h>
#include <sal.h>

int add(_In_ int x, _In_ int y)
{
int r = x + y;
return r;
}

int main()
{
int x = 10;
int y = 20;
int ret = add(x, y);

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

注意,这这里我们选择的是x86的编译工具链。注意在【属性】中,关闭代码优化,并允许生成DEBUG调试信息信息

1.2 使用windbg调试程序
1.2.1 在windbg中启动演示程序

程序进入中断等待调试状态


1.2.2 设置符号表路径和源代码路径(有源码可以设置)

也可以通过命令设置:

.sympath // 查询路径
.sympath fix // 固定路径,会删除已添加的自定义路径
.sympath srv* // 添加微软的符号表
.sympath+ [符号表路径] // 添加自定义符号表路径
1
2
3
4


1.2.3 下断点进行调试
【断点设置方法1】:已知模块名进行设置

【断点设置方法2】:指定文件中的某行设置断点

bp Demo1!Demo1.cpp:XXX // 其中XXX是行号
1

【断点设置方法3】:通过指定起始地址,批量设置断点

 


1.2.4 调试
g // 程序运行到断点
1
F1 // [按键] 单步调试
1


.restart // 重启调试
1
qd // 退出调试
1
更多调试指令,在本系列加下来的篇章中我们再做更多介绍~

二、参考文章
1、《在WinDBG中手动设置断点》
2、https://learn.microsoft.com/zh-cn/windows-hardware/drivers/debugger/getting-started-with-windbg
————————————————

本文为博主原创文章,未经博主允许不得转载。

原文链接:https://blog.csdn.net/weixin_39568531/article/details/134787829

标签:Qt,int,初篇,设置,断点,调试,windbg
From: https://www.cnblogs.com/chinasoft/p/18635367

相关文章

  • Qt 模型Model/视图View/代理Delegate
    一、模型/视图/代理架构简介1、应用程序中往往要存储大量的数据,并对它们进行处理,然后可以通过各种形式显示给用户,用户需要时还可以对数据进行编辑。2、Qt中的模型/视图架构就是用来实现大量数据的存储、处理及其显示的。3、MVC设计模式:(1)、模型(Model)是应用对象,用......
  • qt学习之增加checkBox
    在实际的开发过程中,有时会需要将单元格是控件居中的情况存在,发现加了布局之后,tablewidget的信号cellChanged无法响应,于是想了一个办法当checkBox的状态发生变化时,手动发送tablewidget改变的信号以下是两种在单元格中增加复选框的方法//第一种,setItem直接添加此处没有布局......
  • Qt使用spdlog乱码问题
    Qt使用spdlog输出日志Qt提供了qInstallMessageHandler函数,允许安装一个自定义的消息处理函数,以拦截和处理Qt的日志消息。可以利用这一功能,将日志写入文件。可以在main文件中定义如下函数:#include<spdlog/spdlog.h>#include<spdlog/sinks/rotating_file_sink.h>//<全......
  • 记录python+pyside+qml+qtcharts 使用,防踩坑
    使用QML-qtquick进行开发时,有个使用chart图表的需求,看了一大圈,网上都是qmake或是cmake来构建QTchart,用python开发也只搜到QtWidgets模块进行图表绘制。然而我对qtwidgets不是很了解,想要的是QML开发,在使用ChartView{}时一直闪退,没有效果。经历了苦苦搜寻,终于在https://stackove......
  • Jmeter自学【8】- 使用JMeter模拟设备通过MQTT发送数据
    今天使用jmeter推送数据到MQTT,给大家分享一下操作流程。一、安装JMeter参考文档:Jmeter自学【1】-Jmeter安装、配置二、安装MQTT插件1、下载插件我的Jmeter版本是5.6.3,用到的插件是:mqtt-xmeter-2.0.2-jar-with-dependencies.jar下载链接:https://pan.baidu.com/s/1mWgvSkX......
  • Vue项目使用MQTT
    Vue项目使用MQTT1、安装依赖npmimqtt@2.18.8-S2、页面引用importmqttfrom'mqtt'3、客户端data(){return{...//定义连接的客户端client:null}}4、建立连接并进行订阅如果此连接是想跟随页面的加载而连接,那么将方法放在cre......
  • 【QTTabBar】批量去除当前文件夹的所有文件只读属性
     使用方法参考:https://www.cnblogs.com/issacnew/p/18392262 //作者:博客园-issacnew//网站:https://www.cnblogs.com/issacnew/p/18392262//作用:qttabbar去除当前文件夹下的所有文件只读属性,使得所有文件可读varqs=newActiveXObject("QTTabBarLib.Scripting");v......
  • Qt实现Android的图案密码(图形解锁)源码分享
    一、效果展示二、源码分享PatternPasswordWidget.hpp#ifndefPATTERNCODELOCKWIDGET_H#definePATTERNCODELOCKWIDGET_H#include<QWidget>#include<QWidget>#include<QTimer>classPatternPasswordWidget:publicQWidget{Q_OBJECTpublic:......
  • qt读写ini文件
    [group1]key1=val1key2=val2sameKay=sameVal[group2]jian1=zhi1jian2=zhi2sameKay=sameZhi 比如创建插入一组ini文件,下面是文件写入的代码;Ini文件的写入ini文件不需要像xml和json一样需要使用QFile打开文件,只需将文件路径及文件格式传入即可(下方代码运行完毕,ini文件则会更新......
  • Qt之数据库使用(十四)
    Qt开发 系列文章-QSqlDatabase-SQLite(十四)目录前言一、SQLite二、SQLite使用1.添加SQL2.创建数据库3.定义类及相关变量4.相关功能函数5.用户类定义6.用户类使用7.效果演示8.SQLite数据库总结前言‌Qt支持的数据库包括SQLite、MySQL、PostgreSQL、ODBC等‌......