mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2025-12-26 17:25:04 +01:00
Symbol file should contain module GUID at beginning (#66). r=bryner
- The dumped symbol format now begins with a MODULE line identifying the uuid, age, and name of the source pdb file. - The processor ignores MODULE lines, but they are useful in figuring out how to index symbol files in a symbol store. - dump_syms and symupload now both accept either a pdb or exe/dll and will read the pdb regardless. - Figured out that MSSS always represents a module's age in pathnames in hexadecimal, and updated SimpleSymbolSupplier to match. http://groups.google.com/group/airbag-dev/browse_thread/thread/572108d6567edd58 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@59 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
e47047b383
commit
80866e7945
14 changed files with 1718 additions and 1635 deletions
|
|
@ -67,7 +67,7 @@ string SimpleSymbolSupplier::GetSymbolFile(MinidumpModule *module) {
|
|||
path.append("/");
|
||||
char uuid_age_string[43];
|
||||
snprintf(uuid_age_string, sizeof(uuid_age_string),
|
||||
"%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%d",
|
||||
"%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%X",
|
||||
cv_record->signature.data1, cv_record->signature.data2,
|
||||
cv_record->signature.data3,
|
||||
cv_record->signature.data4[0], cv_record->signature.data4[1],
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@
|
|||
// directory with a name identical to the corresponding pdb file. Within
|
||||
// each of these directories, there are subdirectories named for the uuid and
|
||||
// age of each pdb file. The uuid is presented in hexadecimal form, with
|
||||
// uppercase characters and no dashes. The age is appended to it in decimal
|
||||
// form, without any separators. Within that subdirectory,
|
||||
// uppercase characters and no dashes. The age is appended to it in
|
||||
// hexadecimal form, without any separators. Within that subdirectory,
|
||||
// SimpleSymbolSupplier expects to find the symbol file, which is named
|
||||
// identically to the pdb file, but with a .sym extension. This sample
|
||||
// hierarchy is rooted at the "symbols" base directory:
|
||||
|
|
@ -59,9 +59,6 @@
|
|||
// SimpleSymbolServer, provided that the pdb files are transformed to dumped
|
||||
// format using a tool such as dump_syms, and given a .sym extension.
|
||||
//
|
||||
// TODO(mmentovai): verify that MSSS stores the age as presented as decimal
|
||||
// and not hexadecimal or something else. Adjust here to match if necessary.
|
||||
//
|
||||
// SimpleSymbolSupplier presently only supports symbol files that have
|
||||
// the MSVC 7.0 CodeView record format. See MDCVInfoPDB70 in
|
||||
// minidump_format.h.
|
||||
|
|
|
|||
|
|
@ -249,6 +249,13 @@ bool SourceLineResolver::Module::LoadMap(const string &map_file) {
|
|||
if (!ParsePublicSymbol(buffer)) {
|
||||
return false;
|
||||
}
|
||||
} else if (strncmp(buffer, "MODULE ", 7) == 0) {
|
||||
// Ignore these. They're not of any use to SourceLineResolver, which
|
||||
// is fed modules by a SymbolSupplier. These lines are present to
|
||||
// aid other tools in properly placing symbol files so that they can
|
||||
// be accessed by a SymbolSupplier.
|
||||
//
|
||||
// MODULE <guid> <age> <filename>
|
||||
} else {
|
||||
if (!cur_func) {
|
||||
return false;
|
||||
|
|
|
|||
1
src/processor/testdata/module1.out
vendored
1
src/processor/testdata/module1.out
vendored
|
|
@ -1,3 +1,4 @@
|
|||
MODULE 11111111-1111-1111-1111-111111111111 1 module1.pdb
|
||||
FILE 1 file1_1.cc
|
||||
FILE 2 file1_2.cc
|
||||
FILE 3 file1_3.cc
|
||||
|
|
|
|||
1
src/processor/testdata/module2.out
vendored
1
src/processor/testdata/module2.out
vendored
|
|
@ -1,3 +1,4 @@
|
|||
MODULE 22222222-2222-2222-2222-222222222222 2 module2.pdb
|
||||
FILE 1 file2_1.cc
|
||||
FILE 2 file2_2.cc
|
||||
FILE 3 file2_3.cc
|
||||
|
|
|
|||
1
src/processor/testdata/module3_bad.out
vendored
1
src/processor/testdata/module3_bad.out
vendored
|
|
@ -1,2 +1,3 @@
|
|||
MODULE 33333333-3333-3333-3333-333333333333 3 module3.pdb
|
||||
FILE 1 file1.cc
|
||||
FUNC 1000
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
MODULE bce8785c-57b4-4245-a669-896b6a19b954 2 kernel32.pdb
|
||||
PUBLIC b5ae c BaseDllInitialize
|
||||
PUBLIC 9b47 4 CloseHandle
|
||||
PUBLIC 17826 0 BaseDllInitializeMemoryManager
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
MODULE 63fe4780-728d-4937-9b9d-7bb6460cb42a 1 test_app.pdb
|
||||
FILE 1 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winsock.h
|
||||
FILE 2 c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h
|
||||
FILE 3 c:\program files\microsoft visual studio 8\vc\platformsdk\include\wincon.h
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue