我有一个调试时发现的地址,我怀疑它属于某个进程的某个线程的调用堆栈。
找出哪个主题的最佳方法是什么(或者我的假设是假的)?
P.S。我可以反复使用!process
然后再使用.process
和!thread
,但必须有更好的方法。
P.S.S。不幸的是,我无法在用户模式调试时重现这种情况。
提前致谢。
答案 0 :(得分:0)
首先,如果您加载了符号,则可以使用ln <address>
从地址中收集一些信息。从那里开始,不应该猜测涉及哪个进程/线程。
如果这不符合您的要求,您可以继续采用强力方法。搜索的最佳选择是以更易搜索的格式自动获取调用栈。以下内容将把它们全部写入一个文件,您可以使用自己喜欢的文本编辑器轻松搜索。
.logopen c:\stacks.txt; !for_each_process "!process @#Process; ~*kv1000"; .logclose
这需要一段时间,所以去喝点咖啡。如果您感到幸运,可以直接从windbg搜索输出:
.shell -ci "!for_each_process \"!process @#Process; ~*kv1000\"" findstr "deadbeef"
(将 deadbeef 替换为您要查找的地址)
希望这可以满足您的需求,或者至少指出您编写解决方案的脚本。