ntsd

可均可可3 个月前
windbg·sos·net 高级调试·ntsd
Advanced .Net Debugging 11:完结篇一、介绍     这是我的《Advanced .Net Debugging》这个系列的第十一篇文章,也是这个系列的最后一篇了。我已经把原书的前八章内容全部写完了,本来打算继续写第九章和第十章的内容,后来我放弃逐章逐节的编写,选择了将两章的内容进行过滤后,合为一篇,只把重要的内容包含进来的做法。原因是,我看了原书的后两章内容后,发现很多章节都是一带而过的介绍工具如何使用,讲解的并不是很详细。还有一点更重要的原因就是【高级调试所涉及的知识点】已经全部包含在前面所写的章节中了。如果大家想了解更详细的内容,可以直
可均可可6 个月前
windbg·任务管理器·dump·ntsd·事后调试
Advanced .Net Debugging 10:事后调试一、介绍     这是我的《Advanced .Net Debugging》这个系列的第十篇文章。这篇文章的内容是原书的第三部分的【高级主题】的第八章【事后调试】。前面几篇文章,我们介绍了很多工具,可以帮助大家找出问题的所在。但是,有一类问题我们是没办法使用这些工具来解决的,那就是已经发布的程序。在程序发布后,总是会出现一些问题,并且这些问题出现的时机是不确定的,大多数出现在用户在使用软件的过程中。想要解决这样的问题,我们当然会想到远程调试,有时候可以,有时候是不可以的,当然,不可以的理由会有很多,比如:
可均可可9 个月前
windbg·clr·程序集·ntsd
Advanced .Net Debugging 6:程序集加载器EntityUtil 类的代码Program 类的代码在 GAC 中的程序集必须是强命名的,并且拥有唯一的版本号。在共享程序集加载的过程中(在默认的加载上下文中),CLR 加载器会首先检查 GAC 来确定这个程序集是否存在,然后再查看私有的加载路径。             我们可以使用【Windbg Preview】工具,使用【lm f】命令查看目标进程中所有已加载的模块以及它们相应的加载路径。这个很简单,直接贴结果。这个里面,我使用【lm】和【lm f】两个命令,大家可以自己体会区别。
可均可可10 个月前
windbg·thread·gc·clr·ntsd·值类型·引用类型·托管堆
Advanced .Net Debugging 3:基本调试任务(对象检查:内存、值类型、引用类型、数组和异常的转储)打开【NTSD】调试器窗口。继续使用【g】命令,运行调试器,等调试器卡住后,按【ctrl+c】组合键键入调试器的中断模式。                     切换到主线程,执行命令【~0s】。
可均可可10 个月前
windbg·断点·clr·ntsd
Advanced .Net Debugging 3:基本调试任务(上)如果没有指定任何参数,只能显示一组可用的选项。我们将我们的项目完整路径和项目名称作为输入参数。执行【ntsd E:\Visual Studio 2022\Source\Projects\AdvancedDebug.NetFramework.Test\ExampleCore_3_1_1\bin\Debug\net8.0\ExampleCore_3_1_1.exe】,弹出新窗口,如图: