我有一个崩溃转储文件,我想确定发生崩溃的确切指令,更准确地说是'System_Messaging_ni + 60e4e',因为我怀疑MSMQ问题。
Function Arg 1 Arg 2 Arg 3 Source
KERNELBASE!RaiseException+58 e0434f4d 00000001 00000001
mscorwks!GetMetaDataInternalInterface+300e1 015c95dc 00000000 00000000
mscorwks!GetMetaDataInternalInterface+29d15 00000000 00000000 0164d854
System_Messaging_ni+814aa 00000000 00000000 0141aeb0
System_Messaging_ni+60e4e 0061ec0c 73d2f845 8e1d9768
mscorwks+f830 01611664 09d4f328 734402ff
我的理解是'System_Messaging_ni + 60e4e'表示'从模块'System_Messaging_ni'开始的字节偏移0x60e4e处的指令。
如何确定'System_Messaging_ni'引用的确切DLL文件?我在我的系统中找不到任何System.Message.ni.dll。 _ni后缀是什么意思? 如何判断偏移处的指令是IL还是本机代码? 如果指令在IL中,我可以使用ILDASM来查找确切位置吗?
非常感谢任何帮助!
答案 0 :(得分:0)
可能与.Net
有关我知道这些数字都是十六进制的。
我注意到没有源列。
你可能想尝试一个带有调试符号的版本(看起来你已经是因为它不仅仅是数字)。如果这就是你正在使用的,嗯。也许唯一剩下的就是开始分析输入函数的参数,看看出了什么问题。
我通常在编译代码时生成一个.map文件。这会生成列表/偏移量/进入代码库,您可以使用它来确定哪个函数(如果你刚刚获得只有数字的故障转储)发生了崩溃。(比如可能在哪个系统调用中)。
对ni的猜测: