Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Unified Diff: snapshot/win/module_snapshot_win.cc

Issue 1415543003: win: Plumb module PDB name through snapshot (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« snapshot/win/module_snapshot_win.h ('K') | « snapshot/win/module_snapshot_win.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: snapshot/win/module_snapshot_win.cc
diff --git a/snapshot/win/module_snapshot_win.cc b/snapshot/win/module_snapshot_win.cc
index 86aae48f2e7cc0881feb3ddb3d1f346da1dba2c2..78373bf91a22475190383752928e9f0b3520113c 100644
--- a/snapshot/win/module_snapshot_win.cc
+++ b/snapshot/win/module_snapshot_win.cc
@@ -29,6 +29,9 @@ ModuleSnapshotWin::ModuleSnapshotWin()
name_(),
timestamp_(0),
process_reader_(nullptr),
+ uuid_(),
+ age_(0),
+ pdb_name_(),
initialized_() {
}
@@ -51,6 +54,20 @@ bool ModuleSnapshotWin::Initialize(
return false;
}
+ DWORD age_dword;
+ std::string full_pdb_name;
+ if (pe_image_reader_->DebugDirectoryInformation(
+ &uuid_, &age_dword, &full_pdb_name)) {
+ static_assert(sizeof(DWORD) == sizeof(uint32_t), "unexpected age size");
+ age_ = age_dword;
+
+ size_t last_slash = full_pdb_name.find_last_of("/\\");
Mark Mentovai 2015/10/28 20:01:11 I guess this can’t be a BaseName() because this is
scottmg 2015/10/28 20:59:25 Right on both counts. A quick check against MiniDu
+ if (last_slash != std::string::npos)
+ pdb_name_ = full_pdb_name.substr(last_slash + 1);
+ else
+ pdb_name_ = full_pdb_name;
+ }
+
INITIALIZATION_STATE_SET_VALID(initialized_);
return true;
}
@@ -137,16 +154,13 @@ ModuleSnapshot::ModuleType ModuleSnapshotWin::GetModuleType() const {
void ModuleSnapshotWin::UUIDAndAge(crashpad::UUID* uuid, uint32_t* age) const {
INITIALIZATION_STATE_DCHECK_VALID(initialized_);
- // TODO(scottmg): Consider passing pdbname through to snapshot.
- std::string pdbname;
- DWORD age_dword;
- if (!pe_image_reader_->DebugDirectoryInformation(
- uuid, &age_dword, &pdbname)) {
- *uuid = crashpad::UUID();
- *age = 0;
- }
- static_assert(sizeof(DWORD) == sizeof(uint32_t), "unexpected age size");
- *age = age_dword;
+ *uuid = uuid_;
+ *age = age_;
+}
+
+std::string ModuleSnapshotWin::PDBName() const {
+ INITIALIZATION_STATE_DCHECK_VALID(initialized_);
+ return pdb_name_;
}
std::vector<std::string> ModuleSnapshotWin::AnnotationsVector() const {
« snapshot/win/module_snapshot_win.h ('K') | « snapshot/win/module_snapshot_win.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698