【发布时间】:2023-01-25 22:48:03
【问题描述】:
我在一些源代码上设置了一个断点。 每次触发断点时,我都会执行两个命令:
0:000> kb 1
# RetAddr : Args to Child : Call Site
00 00007ffa`a05db848 : 00007ffa`a061ac98 00007ffa`b3135ba1 000002a8`32f20000 000002a8`32f20000 : KERNELBASE!GetEnvironmentVariableW
选择第一个参数地址00007ffa a061ac98并通过
0:000> du 00007ffa`a061ac98
00007ffa`a061ac98 "InstallRoot"
现在基本上每次都会遇到断点,我总是必须手动运行两个命令和一个地址的手动复制粘贴。
有没有更自动的方法?
我试过 dx 但这对我不起作用,因为我缺少参数
0:000> dx -r3 Debugger.Sessions.First().Processes.First().Threads.First().Stack.Frames[0]
Debugger.Sessions.First().Processes.First().Threads.First().Stack.Frames[0] : KERNELBASE!GetEnvironmentVariableW [Switch To]
LocalVariables : Unexpected failure to dereference object
Parameters : Unexpected failure to dereference object
Attributes
InstructionOffset : 0x7ffab0835240
ReturnOffset : 0x7ffaa05db848
FrameOffset : 0xce79ffee90
StackOffset : 0xce79ffee98
FuncTableEntry : 0x0
Virtual : 1
FrameNumber : 0x0
获取参数也不起作用
0:000> dx -r3 Debugger.Sessions.First().Processes.First().Threads.First().Stack.Frames[0].Parameters
Error: Wrong Parameter. (0x80070057)
关于如何从顶部框架中提取 Arg[0] 并更自动地显示它的提示会很棒!
注意:我基本上想在每次遇到断点时执行此命令。也许有更好的方法。
【问题讨论】:
标签: windbg