Skip to content

feat(debuginfo): Extract srcsrv data from PDB for file mapping#943

Open
mujacica wants to merge 15 commits intomasterfrom
feat/perforce-srcsrv-support
Open

feat(debuginfo): Extract srcsrv data from PDB for file mapping#943
mujacica wants to merge 15 commits intomasterfrom
feat/perforce-srcsrv-support

Conversation

@mujacica
Copy link
Copy Markdown
Contributor

No description provided.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Nov 10, 2025

Messages
📖 Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 6290cd3

Copy link
Copy Markdown
Contributor

@loewenheim loewenheim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The approach of implementing the remapping as a transformer is fundamentally sound, but I believe the better approach is to integrate it into PdbDebugSession directly. This is for a few reasons:

  1. The transformer machinery is used in Symbolicator to incorporate information from supplementary files (BCSymbolMaps, il2cpp mapping files) into a symcache. These files are separate from the object file being converted to a symcache. By contrast, in this case, the information is already present in the object file itself.
  2. Symbolicator doesn't know about different object file types—it relies on symbolic to convert any object file into a symcache. This information is available to Symbolicator in principle, i.e. it could pattern match on what kind of object file it's dealing with and extract the source server information from PDB objects.

@mujacica mujacica force-pushed the feat/perforce-srcsrv-support branch from 2bc5c37 to 3a14467 Compare November 18, 2025 11:33
@mujacica mujacica force-pushed the feat/perforce-srcsrv-support branch from 3a14467 to a5afa5e Compare December 9, 2025 15:00
Comment on lines +124 to +125
let depot_path = var_map.get("var3")?;
let changelist = var_map.get("var4").map(String::as_str);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my only feedback here is that if its expected that the layout uses very specific variables to house the path & revision information, you'll want to likely validate that the revision (changelist here, but I know this means revision) is a valid number (if that positional value exists). Our current layout has these at position 2 & 3 respectively, which means older pdbs from builds before we switch this position will try to map the path as the revision.

Please clearly document this layout:
<Absolute Path>*<User Data, likely Perforce server name>*<Depot Path>*<File Revision>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants