有什么方法可以显示WinDBG中可执行文件调用的所有功能而不仅仅是调用堆栈?

问题描述

我正在尝试使用WinDbg调试无法正常运行的可执行文件(不会收到分段错误,只是没有执行他应做的事情)。我希望看到一个调用堆栈,其中包含运行可执行文件调用的所有函数。在WinDbg或任何其他调试器中有可能吗?

解决方法

是的,我评论过使用wt(监视和跟踪)
Read the docs 可以通过多种方式进行配置
就像只有第一级电话一样
仅限第n级通话
仅在特定模块中
仅在主模块等中

下面是ntdll中跨越um-km边界的函数的简单痕迹

0:000> u . l1
ntdll!LdrpInitializeProcess+0x11bf:
76ff6113 e870fffdff      call    ntdll!NtQueryInformationProcess (76fd6088)

0:000> bp .+5  //set a bp on return address
0:000> bl
 0 e 76ff6118     0001 (0001)  0:**** ntdll!LdrpInitializeProcess+0x11c4

0:000> wt
    2     0 [  0] ntdll!NtQueryInformationProcess
   27     0 [  0] aswhook
    1     0 [  1]   aswhook
   28     1 [  0] aswhook
    1     0 [  1]   0x6efc0480
    1     0 [  1]   0x6efc0485
    2     0 [  1]   ntdll!NtQueryInformationProcess
    2     0 [  2]     ntdll!KiFastSystemCall
    1     0 [  1]   ntdll!NtQueryInformationProcess
   46     8 [  0] aswhook
    3     0 [  1]   aswhook

Breakpoint 0 hit
eax=00000000 ebx=7ffdf000 ecx=e8cb8789 edx=ffffffff esi=ffffffff edi=00000000
eip=76ff6118 esp=0018f59c ebp=0018f6f4 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
ntdll!LdrpInitializeProcess+0x11c4:
76ff6118 85c0            test    eax,eax
0:000>