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

在上一篇《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;
}

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

1.2 使用windbg调试程序

1.2.1 在windbg中启动演示程序

在这里插入图片描述
程序进入中断等待调试状态
在这里插入图片描述

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

在这里插入图片描述
也可以通过命令设置:

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

在这里插入图片描述

1.2.3 下断点进行调试

【断点设置方法1】:已知模块名进行设置
在这里插入图片描述
【断点设置方法2】:指定文件中的某行设置断点

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

在这里插入图片描述
【断点设置方法3】:通过指定起始地址,批量设置断点
在这里插入图片描述

在这里插入图片描述

1.2.4 调试

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

在这里插入图片描述

.restart	// 重启调试	
qd		    // 退出调试

更多调试指令,在本系列加下来的篇章中我们再做更多介绍~

二、参考文章

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 11:48:04       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 11:48:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 11:48:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 11:48:04       18 阅读

热门阅读

  1. Docker创建mqtt容器mosquitto

    2023-12-08 11:48:04       32 阅读
  2. CNN,DNN,RNN,GAN,RL+图像处理常规算法(未完待续)

    2023-12-08 11:48:04       36 阅读
  3. miot-plugin-sdk. npm install安装失败

    2023-12-08 11:48:04       50 阅读
  4. 渗透测试工具Nmap的深度解析

    2023-12-08 11:48:04       35 阅读
  5. D.408之计算机网络

    2023-12-08 11:48:04       40 阅读
  6. 第5章 Ajax数据爬取

    2023-12-08 11:48:04       43 阅读