- 在VisualStudio中部署GDAL库的C++版本(包括SQLite、PROJ等依赖)
- Android开机流程介绍
- STM32CubeMX教程31USB_DEVICE-HID外设_模拟键盘或鼠标
- 深入浅出Java多线程(五):线程间通信
一、简介
我曾看到过许多开发人员使用错误的工具来分析问题,更有甚者,有些人连任何工具都没有使用。他们采取的分析方法通常包括:输出更多的调试信息,或者做一些临时性的代码审查。这里的临时性是指,通过猜测来推断问题可能来之哪个部分的代码。有时候,开发人员会幸运的发现问题刚好处于他们正在审查的代码当中。然而,在更多情况下并非如此,问题发生的位置和表现出来的位置往往相差甚远。说起来有点可笑,我很长一段时间都是这样调试的。自从我接触了《Net 高级调试》,调试原来不是这样的。通过使用一些功能强大的调试工具,开发人员可以极大的减少在分析问题时耗费的时间。
所以,我们必须学会如何使用工具进行调试,要知道每种工具在哪些情况下使用以及如何使用。这是对大家的建议,更多是对我自己的鞭策。今天我们就介绍一些调试中经常要用到的一些工具。
在开始之前,我还得说明一下,《Net 高级调试》这本书,写的挺早的,中文翻译的版本是2011年机械工业出版社出版的,里面的内容有些也比较老旧,我都做了实时的更新,都是最新的。因为这次只是工具介绍,具体的环境就不做说明了。还有,有些工具,比如:NTSD、KD等类似的命令行调试器我就不太在行了,所以我会使用在这个系列出现的GUI调试工具(Windbg)来调试问题,具体其他调试器使用方法,大家可以自行补充。
二、常用调试工具
我们想要成为高级程序员,高级的调试技巧必须掌握,当然,这些技巧需要借助工具来体现,我们下面就来介绍一下将在我这个系列里面用到的一些调试工具,当前不是全部,我会在以后得章节里,有需要在介绍一些用到的调试工具。
说起调试工具,其实有很多,他们的用途也不一样,有一部分工具侧重分析某一类特定的问题,而有些工具可以同时处理若干类问题,我们要知道每种工具在什么情况下使用以及如何使用,这一点非常重要。
1、Windows 调试工具集
Windows 调试工具集是一个免费的软件包,它有两个版本:32位和64位。在这个工具集中有3种用户态调试工具: NTSD(Microsoft NT 符号调试器)、CDB(Microsoft 控制台调试器) 和 WinDbg,以及 一种内核态调试器 KD。我说一下区别:NTSD 和 CDB(KD 它属于内核态调试器,但是它是命令行调试器)都是命令行调试器,Windbug 是一个具有界面的调试器,它可以更容易调试源代码。他们虽然有这些区别,但是他们使用了相同的内核调试器引擎。
【应用场合】一组调试器和调试工具。
【下载地址】 https://learn.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools
【软件版本】Microsoft (R) Windows Debugger Version 10.0.22621.2428(书上:6.8.4.0)
Windebug效果如图:
NTSD如图: 。
我们安装了调试器工具集,也要配置环境变量,就不用每次使用都切换目录。 。
可以将 Windows 调试工具作为开发工具包的一部分或独立工具集获取:64位 SOS 效果如图: 。
运行效果如图: 。
我们打开【性能监视器】,操作界面如下: 。
我们可以点击绿色的加号,就能看到性能计数器的类别,如图: 。
DnSpy操作界面截图如下: 。
最后此篇关于Advanced.NetDebugging1:你必须知道的调试工具的文章就讲到这里了,如果你想了解更多关于Advanced.NetDebugging1:你必须知道的调试工具的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
今天,我在 Windows 10 的“程序和功能”列表中看到了 2 个不同版本的 ARC,因此我选择卸载旧版本,因为我需要一些空间。在卸载结束时,它们都消失了! 所以,我从 https://insta
我刚买了一台更强大的电脑,安装了 composer 并想继续我的项目,但是当我使用 gii 时,它给了我这个错误。 我该如何解决?为什么我得到它?谢谢你。 最佳答案 解决了。自 2.0.13 起,类名
1、介绍 这是我的《Advanced .Net Debugging》这个系列的第十一篇文章,也是这个系列的最后一篇了。我已经把原书的前八章内容全部写完了,本来打算继续写第九章和第十章的内容,后
一、介绍 这是我的《Advanced .Net Debugging》这个系列的第十篇文章。这篇文章的内容是原书的第三部分的【高级主题】的第八章【事后调试】。前面几篇文章,我们介绍了很多工具,可以
一、介绍 这是我的《 Advanced .Net Debugging》这个系列的第八篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第六章【同步】。我们经常写一些多线程的应用程序,写的多
一、介绍 这是我的《 Advanced .Net Debugging》这个系列的第九篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第七章【互用性】。互用性包含两个方面,第一个方面就是托
一、简介 这是我的《Advanced .Net Debugging》这个系列的第七篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第五章,这一章主要讲的是从根本上认识托管堆和垃圾回收。软件
一、简介 这是我的《 Advanced .Net Debugging》这个系列的第六篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第四章。这章主要讲的是程序集加载器,比如:CLR 加载
一、简介 我曾看到过许多开发人员使用错误的工具来分析问题,更有甚者,有些人连任何工具都没有使用。他们采取的分析方法通常包括:输出更多的调试信息,或者做一
一、简介 我曾看到过许多开发人员使用错误的工具来分析问题,更有甚者,有些人连任何工具都没有使用。他们采取的分析方法通常包括:输出更多的调试信息,或者做一
一、简介 我曾看到过许多开发人员使用错误的工具来分析问题,更有甚者,有些人连任何工具都没有使用。他们采取的分析方法通常包括:输出更多的调试信息,或者做一
我是 yii2 的新手,当我使用 从存档中提取 yii2 高级内容时《基本应用模板》、《带有高级应用模板的Yii 2》当我在服务器上上传时,它显示空白页面。 我检查了 yii2 basic 它工作正常
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
如果我遗漏了任何重要的细节,我想提前道歉。 我正在尝试执行升级,在安装新版本之前应删除以前版本的软件(和所有组件)。 我会尽量避免让您厌烦细节,并说如果您进行“典型”安装,一切都会按计划进行。如果您选
您好,我正在尝试创建一个存储整数或字符串元素的通用列表迭代器。我正在尝试测试它调用 IteratorG advance(IteratorG it, int n) 函数的情况,该函数采用在列表 it 中
我想知道是否有任何可能的方法,使 MySQL 查询可以动态搜索 WHERE 子句中的任何内容。 例如,如果查询是 Select * from table where item = 'Dell Opti
我正在使用 PayPal Advanced,并使用用户定义的字段 USER1 - USER10 发送一些交易数据,这将帮助我在通过 Silent Post 请求返回时识别它。有谁知道这些 USERx
这个问题在这里已经有了答案: How to use "distanceTo", "advancedBy" to handle String in Xcode7 beta6 (2 个答案) 关闭 7
请告诉我如何提前获得 transactionHash? // I have these tx opts: var txOpts = { "to":"0x345cA3e014Aaf5dcA48805
我正在尝试使用 Eloquent 创建类似的东西。但是,我在使用 or 子句时遇到了麻烦。 SELECT * FROM table WHERE column1 = 1 AND column2 = 2
我是一名优秀的程序员,十分优秀!