从十六进制表示找出调用站点
我正在尝试分析 MS BizTalk 服务的故障转储,该服务不断消耗 100% CPU(我认为这是因为我们的代码:))。我有几个转储,最繁忙线程的堆栈跟踪看起来很相似 - 唯一的问题是,堆栈顶部似乎缺少符号。它看起来像这样:
0x642`810b2fd0
那么,问题是 - 我怎样才能从这个地址找到模块/函数? (或者至少是模块,这样我就知道缺少什么符号文件)。
I'm trying to analyse a crash dump of MS BizTalk service, which is constantly consuming 100% CPU (and I assume that's because of our code :) ). I have a couple of dumps and the stack trace of the busiest threads looks similar - the only problem is, that the top of the stack seems to be missing symbols. It looks like this:
0x642`810b2fd0
So, the question is - how can I find out the module/function from this address? (or at least the module, so that I know what symbol file is missing).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
WinDbg 中的 lm 转储模块列表。在你的情况下,WinDbg 没有找到任何占用该地址的模块——否则它会打印+。一些库动态生成代码,在这种情况下,函数体将放置在堆中,并且不会有任何与之关联的符号甚至模块。我知道 MCF 在某个时候做到了这一点。
我建议您尝试分析堆栈顶部具有符号的帧,并尝试找出它们可能在做什么。
lm
in WinDbg dumps list of modules. In your case WinDbg does not find any modules that occupy this address -- otherwise it would have printed +. Some of the libraries generate code dynamically, in this case the body of the function will be placed in the heap and won't have any symbols or even module associated with it. I know MCF at some point did this.I suggest you try to analyze the frames at the top of the stack that have symbols and try to find out what they might be doing.
希望我能提供更多帮助,但我唯一能建议的是阅读这份备忘单 WinDbg 命令。有一个命令 wt 包含一个参数列表,可以帮助获取有关该调用站点的模块信息。
让我知道这对您是否有用。
Wish I could help more, but the only thing I can suggest is reading this cheat sheet of WinDbg commands. There is one command
wt
which has a list of params which could help with getting module information about that call site.Let me know if this is any use for you.