【问题标题】:What does the +0x10 mean next to function addresses in WinDbg SOS exception stacks?WinDbg SOS 异常堆栈中的函数地址旁边的 +0x10 是什么意思?
【发布时间】:2009-12-04 09:11:09
【问题描述】:

例子:

内部异常: StackTrace(生成): SP IP 功能 003D8E9C 03B21BD7 东西!Blah.Blah.FunctionName(System.String)+0xa8

+0xa8 部分表示什么?

【问题讨论】:

    标签: .net debugging windbg sos


    【解决方案1】:

    它是代码中的偏移量,因此它不是方法中的第一条指令,而是方法中偏移量 0xa8 或 0x10 处的指令,从入口点开始计数。

    【讨论】:

    • 这就是我的想法,但是查看所述函数的 IL(我们称之为 X),并移动到偏移 0xa8,将我带到了一个 ldarg。异常实际上发生在函数 Y 中,X 从偏移量 0xa8 附近调用该函数。我需要确切地知道是哪一个。
    • 我正在处理它,但我必须在这台机器上安装 Windbg。如果我没记错的话,偏移量是机器代码指令,而不是 IL。
    • 请注意,我只知道它是一个偏移量,我还不完全熟悉 Windbg 知道如何找到正确的指令,但我擅长谷歌搜索。也许有更多Windbg知识的人可以通过Windbg命令为您提供更好的答案以找到正确的代码。但我也会试着找到它。
    • 注意,内联可以去掉偏移量,如果你调用的 Y 方法很小,它可能会直接内联到 X 的机器代码中。
    • 尝试在 MethodDesc 上运行 !u 并查看起始地址 + 偏移量得到什么
    猜你喜欢
    • 2019-06-30
    • 2021-03-24
    • 2011-01-13
    • 2011-12-28
    • 2014-02-17
    • 1970-01-01
    • 2015-11-11
    • 2022-07-21
    • 2011-01-06
    相关资源
    最近更新 更多