0

クラッシュ ダンプ ファイルがあり、MSMQ の問題が疑われるため、クラッシュが発生した正確な命令 (より正確には「System_Messaging_ni+60e4e」) を特定したいと考えています。

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 を使用して正確な場所を特定できますか?

助けてくれてありがとう!

4

1 に答える 1

0

それはおそらく.Netと関係があります

数字はすべて16進数であることは知っています。

ソース列がないことに気付きました。

デバッグ シンボルを含むバージョンを試してみることをお勧めします (数字だけではないため、既にそうであるように見えます)。それがあなたが使っているものなら、うーん。おそらく、残っている唯一のことは、関数に渡されたパラメーターの分析を開始し、どこで問題が発生したかを確認することです。

私は通常、コードをコンパイルするときに .map ファイルを生成することから始めます。これにより、リスト /offsets/ がコードベースに生成され、これを使用して、クラッシュが発生した関数 (数値のみのクラッシュダンプを取得する場合) を特定できます (どのシステム コールで発生したかなど)。

ni の推測:

  • ネットワークインターフェース
  • .net インターフェイス (私の推測)
  • 非?
  • ?-idl (これは疑問です。IDL/MIDL は通常、インターフェイスを指定します。インターフェイスを作成する場合を除き、ほとんどのエンドユーザー開発者には使用されません)
于 2013-01-13T06:32:22.947 に答える