000000DA5B97E720 00007ffd9e0c19cf ExampleCore_3_1_9.Program.Main(System.String[]) [E:\Visual Studio 2022\Source\Projects\AdvancedDebug.NetFramework.Test\ExampleCore_3_1_9\Program.cs @ 11]
复制代码
我们可以看到,【k】命令的输出中包罗【!clrstack】命令的输出,只不过【!clrstack】命令,更具体一点,每个方法的名称和包罗的参数都输出了。
k 系列命令里有一个命令很有效,那就是【kb】,这个命令可以提取方法的参数,我们可以尝试提取【ntdll!NtReadFile+0x14】这个方法的第一个参数,相识它的用法。
3.1.5、COMState A、基础知识
Com 提供了两种套间模子:单线程套间(Single Threaded Apartment,STA)和多线程套间(Multiple Threaded Apartment,MTA)。当一个线程使用一个 COM 对象时,它必须告诉 COM 子系统使用哪种套间模子。在 .NET 互用性层时具体的套间模子对线程的初始化也有区别,我们必须清楚。当我们在调试 COM 互用性标题时,找出线程的套间模子也是一个基本素质要求。
这里有两个命令可以使用,分别是【!ComState】和【!t|Threads】命令。效果是一样的,但是输出的内容会有区别。
B、眼见视为
调试源码:ExampleCore_3_1_9
调试任务:ComState 和 t 命令的使用 1)、NTSD 调试
编译项目,打开【Visual Studio 2022 Developer Command Prompt v17.9.2】命令行工具,输入命令【NTSD E:\Visual Studio 2022\Source\Projects\AdvancedDebug.NetFramework.Test\ExampleCore_3_1_9\bin\Debug\net8.0\ExampleCore_3_1_9.exe】,打开调试器。
</strong>22 First chance exceptions are reported before any exception handling.
23 This exception may be expected and handled.
24 *** WARNING: Unable to verify checksum for E:\Visual Studio 2022\Source\Projects\AdvancedDebug.NetFramework.Test\ExampleCore_3_1_12\bin\Debug\net8.0\ExampleCore_3_1_12.dll