Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add support for Portable PDB debug files / caches and .NET symboliction #883

Merged
merged 27 commits into from
Oct 18, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
f691225
ref: Update dependencies, symbolic & reqwest
Swatinem Oct 3, 2022
21cf76c
Update symbolic versions in Cargo.toml
loewenheim Oct 3, 2022
b2adff1
add changelog and bump version in toml as well
Swatinem Oct 3, 2022
96789f8
why are we asserting cache files again?
Swatinem Oct 3, 2022
5942784
Missed a dep
loewenheim Oct 3, 2022
6040da6
WIP: Dotnet symbolication using ppdb_caches
loewenheim Aug 19, 2022
7126ec2
WIP: Portable pdb caches
loewenheim Sep 22, 2022
829b7c7
We should actually save the cache we compute
loewenheim Sep 23, 2022
160f576
WIP add integration test
loewenheim Sep 26, 2022
98ae7f4
Integration test
loewenheim Sep 29, 2022
ce71b21
Address feedback
loewenheim Sep 29, 2022
b77b370
symbolic PR is merged
loewenheim Sep 30, 2022
fa43d92
Add il_offset field to RawFrame
loewenheim Oct 3, 2022
76c3afc
Changelog
loewenheim Oct 3, 2022
596156b
WIP docs
loewenheim Oct 4, 2022
b34a700
Paths
loewenheim Oct 4, 2022
ffceed8
Cargo.lock
loewenheim Oct 4, 2022
e0fe7ca
Add note
loewenheim Oct 4, 2022
0ffd554
Fix path logic
loewenheim Oct 4, 2022
c8ab20d
Update process-event
loewenheim Oct 4, 2022
71e1fad
Address code review
loewenheim Oct 5, 2022
06d3e3a
Add note about function index
loewenheim Oct 5, 2022
e20cfed
use updated object types and stacktrace properties
Swatinem Oct 12, 2022
664092c
Merge branch 'master' into feat/symbolicate-dotnet
Swatinem Oct 17, 2022
de3542f
update integration test and snapshot
Swatinem Oct 18, 2022
4a23f42
fix git ref and broken formatting
Swatinem Oct 18, 2022
98898b2
also update process-event
Swatinem Oct 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
WIP docs
  • Loading branch information
loewenheim committed Oct 4, 2022
commit 596156b79244942bde2c696b665c8cfd1eac0306
10 changes: 5 additions & 5 deletions crates/symbolicator/src/services/ppdb_caches.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ const PPDB_CACHE_VERSIONS: CacheVersions = CacheVersions {
/// Errors happening while generating a symcache.
#[derive(Debug, Error)]
pub enum PortablePdbCacheError {
#[error("failed to write symcache")]
#[error("failed to write ppdb cache")]
Io(#[from] io::Error),

#[error("failed to download object")]
Expand All @@ -66,7 +66,7 @@ pub enum PortablePdbCacheError {
#[error("malformed ppdb cache file")]
Malformed,

#[error("symcache building took too long")]
#[error("ppdb cache building took too long")]
Timeout,
}
#[derive(Debug, Clone)]
Expand Down Expand Up @@ -169,7 +169,7 @@ impl PortablePdbCacheActor {

#[derive(Clone, Debug)]
struct FetchPortablePdbCacheInternal {
/// The external request, as passed into [`SymCacheActor::fetch`].
/// The external request, as passed into [`PortablePdbCacheActor::fetch`].
request: FetchPortablePdbCache,

/// The objects actor, used to fetch original DIF objects from.
Expand All @@ -181,7 +181,7 @@ struct FetchPortablePdbCacheInternal {
/// The object candidates from which [`FetchPortablePdbCacheInternal::object_meta`] was chosen.
///
/// This needs to be returned back with the symcache result and is only being passed
/// through here as callers to the SymCacheActer want to have this info.
/// through here as callers to the PortablePdbCacheActer want to have this info.
candidates: AllObjectCandidates,
}

Expand All @@ -192,7 +192,7 @@ struct FetchPortablePdbCacheInternal {
/// threadpool.
///
/// This is the actual implementation of [`CacheItemRequest::compute`] for
/// [`FetchSymCacheInternal`] but outside of the trait so it can be written as async/await
/// [`FetchPortablePdbCacheInternal`] but outside of the trait so it can be written as async/await
/// code.
#[tracing::instrument(name = "compute_ppdb_cache", skip_all)]
async fn fetch_difs_and_compute_ppdb_cache(
Expand Down
8 changes: 6 additions & 2 deletions crates/symbolicator/src/types/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -179,11 +179,15 @@ pub struct RawFrame {
/// See [`addr_mode`](Self::addr_mode) for the exact behavior of addresses.
pub instruction_addr: HexValue,

/// TODO: Type, name, doc
/// This frame's offset, in bytes, into its function's Intermediate Language stream.
///
/// This is used for dotnet symbolication.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub il_offset: Option<HexValue>,

/// TODO
/// The index of the frame's function in the Portable PDB method table.
///
/// This is used for dotnet symbolication.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub function_index: Option<u32>,

Expand Down