Symbolロードに失敗したcase分析
13358 ワード
最新は製品のフィードバックを分析してきたdumpで、分析の過程でいくつかのdumpのsymbolがロードできないことが分かった.割合は小さく、1000個のdumpで、symbolをロードできないのは7個だけです.
使用してもreload/iもロードできません:
わかってる!Sym noisyはsymbolをロードするプロセス全体を印刷することができます.だから実行!Sym noisyの後に再度実行する.reload/i alibrowser.exe
ロードプロセス全体が長く、どこに問題があるのか一目も見えません.しかし、通常のロードプロセスと比較することができます.次のコードはsymbolを正常にロードできるdumpで実行されます.
両者のロードプロセスをよく比較すると、前の大部分が全く同じで、赤い部分から両者が異なることがわかります.
後者のこの言葉(DBGHELP:Searching for symbols using debugger-provided data)から見ると、symbolをロードするにはdump内のsymbol情報を利用している.
前者のこの情報は失われたり破損したりしてsymbolを正常にロードできない可能性があります.
では、前者がsymbolをロードできるようにするにはどうすればいいのでしょうか.前の大きなログがalibrowserを探しているのが見えます.exe、windbgは最初はalibrowserを見つけたいと思っていました.exeは次にexeの情報を利用して具体的なsymbolを位置決めする.
もし私たちが彼が探している場所にexeを置いたら、ロードに成功するのではないでしょうか.
そこで私はC:Program FilesAliBrowserの下にdumpのバージョンと同じalibrowserを置きました.exe.やはりロードに成功しました.
C:Program FilesAliBrowserに対応するバージョンのalibrowserが配置されています.exeの後,ほとんど(7のうち6つ)がsymbolを正常にロードできることが分かったが,もう1つはsymbolを正常にロードできない.
この問題のあるdumpのロードプロセスを見てみましょう.
symbolをロードするときはD:Program FilesブラウザAliBrowserつまりdumpを生成するときalibrowser.exeが存在するパスを探していますが、このユーザーはデフォルトのパスにインストールされていません.だから、デフォルトのパスのalibrowserに置きます.exeは役に立たない.
また、windbgはまずe:symbolsAlibrowserに着きます.exe4 F 0 C 2 D 28 e 9 e 000の中はalibrowserを探しています.exeなので中にalibrowserを入れます.exeでいいです.
使用してもreload/iもロードできません:
0:000> .reload /i alibrowser.exe
Unable to load image C:\Program Files\AliBrowser\Alibrowser.exe, Win32 error 0n2
*** WARNING: Unable to verify timestamp for Alibrowser.exe
*** ERROR: Module load completed but symbols could not be loaded for Alibrowser.exe
わかってる!Sym noisyはsymbolをロードするプロセス全体を印刷することができます.だから実行!Sym noisyの後に再度実行する.reload/i alibrowser.exe
0:000> !sym noisy
noisy mode - symbol prompts on
0:000> .reload /i alibrowser.exe
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://10.1.170.157/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://msdl.microsoft.com/download/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
DBGHELP: D:\Projects\aliyun\CrashTracker\CrashTracker\bin\Release\Alibrowser.exe - file not found
DBGHELP: Alibrowser.exe not found in e:\symbols
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://10.1.170.157/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://msdl.microsoft.com/download/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
DBGENG: C:\Program Files\AliBrowser\Alibrowser.exe - Couldn't map image from disk.
Unable to load image C:\Program Files\AliBrowser\Alibrowser.exe, Win32 error 0n2
DBGHELP: No header for Alibrowser.exe. Searching for dbg file
DBGHELP: .\Alibrowser.dbg - file not found
DBGHELP: .\exe\Alibrowser.dbg - path not found
DBGHELP: .\symbols\exe\Alibrowser.dbg - path not found
DBGHELP: Alibrowser.exe missing debug info. Searching for pdb anyway
DBGHELP: Can't use symbol server for
Alibrowser.pdb - no header information available
DBGHELP: Alibrowser.pdb - file not found
*** WARNING: Unable to verify timestamp for Alibrowser.exe
*** ERROR: Module load completed but symbols could not be loaded for Alibrowser.exe
DBGHELP: Alibrowser - no symbols loaded
ロードプロセス全体が長く、どこに問題があるのか一目も見えません.しかし、通常のロードプロセスと比較することができます.次のコードはsymbolを正常にロードできるdumpで実行されます.
0:024> !sym noisy
noisy mode - symbol prompts on
0:024> .reload /i alibrowser.exe
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://10.1.170.157/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://msdl.microsoft.com/download/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
DBGHELP: D:\Projects\aliyun\CrashTracker\CrashTracker\bin\Release\Alibrowser.exe - file not found
DBGHELP: Alibrowser.exe not found in e:\symbols
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://10.1.170.157/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://msdl.microsoft.com/download/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
DBGENG: C:\Program Files\AliBrowser\Alibrowser.exe - Couldn't map image from disk.
Unable to load image C:\Program Files\AliBrowser\Alibrowser.exe, Win32 error 0n2
DBGENG: Alibrowser.exe - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.
DBGHELP: Searching for symbols using debugger-provided data.
*** WARNING: Unable to verify timestamp for Alibrowser.exe
DBGHELP: Alibrowser - private symbols & lines
e:\symbols\Alibrowser.pdb\4A9A20AE996E4E5590C000C41FF40AB81\Alibrowser.pdb
両者のロードプロセスをよく比較すると、前の大部分が全く同じで、赤い部分から両者が異なることがわかります.
後者のこの言葉(DBGHELP:Searching for symbols using debugger-provided data)から見ると、symbolをロードするにはdump内のsymbol情報を利用している.
前者のこの情報は失われたり破損したりしてsymbolを正常にロードできない可能性があります.
では、前者がsymbolをロードできるようにするにはどうすればいいのでしょうか.前の大きなログがalibrowserを探しているのが見えます.exe、windbgは最初はalibrowserを見つけたいと思っていました.exeは次にexeの情報を利用して具体的なsymbolを位置決めする.
もし私たちが彼が探している場所にexeを置いたら、ロードに成功するのではないでしょうか.
そこで私はC:Program FilesAliBrowserの下にdumpのバージョンと同じalibrowserを置きました.exe.やはりロードに成功しました.
0:000> .reload /i alibrowser.exe
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://10.1.170.157/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://msdl.microsoft.com/download/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
DBGHELP: D:\Projects\aliyun\CrashTracker\CrashTracker\bin\Release\Alibrowser.exe - file not found
DBGHELP: Alibrowser.exe not found in e:\symbols
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://10.1.170.157/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://msdl.microsoft.com/download/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
DBGENG: C:\Program Files\AliBrowser\Alibrowser.exe - Mapped image memory
DBGHELP: Alibrowser - private symbols & lines
e:\symbols\Alibrowser.pdb\4A9A20AE996E4E5590C000C41FF40AB81\Alibrowser.pdb
C:Program FilesAliBrowserに対応するバージョンのalibrowserが配置されています.exeの後,ほとんど(7のうち6つ)がsymbolを正常にロードできることが分かったが,もう1つはsymbolを正常にロードできない.
この問題のあるdumpのロードプロセスを見てみましょう.
0:004> !sym noisy
noisy mode - symbol prompts on
0:004> .reload /i alibrowser.exe
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://10.1.170.157/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
SYMSRV: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://msdl.microsoft.com/download/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
DBGHELP: D:\Projects\aliyun\CrashTracker\CrashTracker\bin\Release\Alibrowser.exe - file not found
DBGHELP: Alibrowser.exe not found in e:\symbols
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://10.1.170.157/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
SYMSRV: E:\Symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe not found
SYMSRV: http://msdl.microsoft.com/download/symbols/Alibrowser.exe/4F0C2D28e9e000/Alibrowser.exe not found
DBGENG: D:\Program Files\ \AliBrowser\Alibrowser.exe - Couldn't map image from disk.
Unable to load image D:\Program Files\ \AliBrowser\Alibrowser.exe, Win32 error 0n2
DBGHELP: No header for Alibrowser.exe. Searching for dbg file
DBGHELP: .\Alibrowser.dbg - file not found
DBGHELP: .\exe\Alibrowser.dbg - path not found
DBGHELP: .\symbols\exe\Alibrowser.dbg - path not found
DBGHELP: Alibrowser.exe missing debug info. Searching for pdb anyway
DBGHELP: Can't use symbol server for Alibrowser.pdb - no header information available
DBGHELP: Alibrowser.pdb - file not found
*** WARNING: Unable to verify timestamp for Alibrowser.exe
*** ERROR: Module load completed but symbols could not be loaded for Alibrowser.exe
DBGHELP: Alibrowser - no symbols loaded
symbolをロードするときはD:Program FilesブラウザAliBrowserつまりdumpを生成するときalibrowser.exeが存在するパスを探していますが、このユーザーはデフォルトのパスにインストールされていません.だから、デフォルトのパスのalibrowserに置きます.exeは役に立たない.
また、windbgはまずe:symbolsAlibrowserに着きます.exe4 F 0 C 2 D 28 e 9 e 000の中はalibrowserを探しています.exeなので中にalibrowserを入れます.exeでいいです.
0:004> .reload /i alibrowser.exe
DBGHELP: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe - OK
DBGENG: e:\symbols\Alibrowser.exe\4F0C2D28e9e000\Alibrowser.exe - Mapped image memory
DBGHELP: Alibrowser - private symbols & lines
e:\symbols\Alibrowser.pdb\4A9A20AE996E4E5590C000C41FF40AB81\Alibrowser.pdb