从十六进制表示中找出调用站点

时间:2011-09-26 09:29:41

标签: windbg

我正在尝试分析MS BizTalk服务的崩溃转储,它不断消耗100%的CPU(我认为这是因为我们的代码:))。我有几个转储和最繁忙的线程的堆栈跟踪看起来相似 - 唯一的问题是,堆栈的顶部似乎缺少符号。它看起来像这样:

0x642`810b2fd0

所以,问题是 - 如何从这个地址找出模块/功能? (或者至少是模块,以便我知道缺少什么符号文件)。

2 个答案:

答案 0 :(得分:1)

WinDbg中的

lm转储模块列表。在您的情况下,WinDbg找不到任何占用此地址的模块 - 否则它将打印+。一些库动态生成代码,在这种情况下,函数体将放置在堆中,并且不会有任何符号甚至模块与之关联。我知道MCF在某些时候这样做了。

我建议你尝试分析堆栈顶部有符号的帧,并试着找出它们可能正在做什么。

答案 1 :(得分:0)

希望我能提供更多帮助,但我唯一可以建议的是阅读this cheat sheet的WinDbg命令。有一个命令wt,它有一个params列表,可以帮助获取有关该呼叫站点的模块信息。

如果这对您有用,请告诉我。