gpt4 book ai didi

c# - 发生异常时如何获取IL指令偏移量?

转载 作者:行者123 更新时间:2023-11-30 16:37:09 24 4
gpt4 key购买 nike

我想在异常发生时获取 IL 指令偏移量(从方法开始)。

例如我有对象初始化器:

var obj = new SomeObject {
F1 = something.A,
F2 = something.B,
F3 = something.C,
F4 = something2.A,
F5 = something.D
};

如果 something2 将是 null - 将抛出异常。

异常堆栈跟踪将指向第一行:

var obj = new SomeObject {

我能否获得问题对象的准确 IL 代码偏移量?

在这个例子中,我想得到这条指令的偏移量:

callvirt instance void SomeClass2::get_A(class SomeClass2)

更新:已发布答案 here (通过 PDB)在这种情况下不起作用,因为线会指向同一个地方。

最佳答案

如果你在异常时中断,你可以创建一个 StackTrace监 window 口中的对象,将异常传递到其构造函数并在第一帧调用 GetILOffset()(类似于 new StackTrace($exception).GetFrame(0).GetILOffset() IIRC)。

话虽如此,JIT 可能最终会将所有为该语句生成的 native 代码映射到相同的 IL 偏移量,在这种情况下,除了分解该语句之外,您无能为力。

关于c# - 发生异常时如何获取IL指令偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59195770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com