Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 14 additions & 4 deletions tracer/src/Datadog.Trace/Debugger/DynamicInstrumentation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ private void StartBackgroundProcess()
var spanProbes = new List<NativeSpanProbeDefinition>();

var fetchProbeStatus = new List<FetchProbeStatus>();
var lineProbeDiagnosticLevel = Log.IsEnabled(LogEventLevel.Debug) ? LineProbeDiagnosticLevel.Full : LineProbeDiagnosticLevel.Minimal;

foreach (var addedProbe in addedProbes)
{
Expand All @@ -184,7 +185,7 @@ private void StartBackgroundProcess()
{
case ProbeLocationType.Line:
{
var lineProbeResult = _lineProbeResolver.TryResolveLineProbe(addedProbe, out var location);
var lineProbeResult = _lineProbeResolver.TryResolveLineProbe(addedProbe, out var location, lineProbeDiagnosticLevel);
var status = lineProbeResult.Status;

LogLineProbeResolution(addedProbe.Id, lineProbeResult, "initial resolution");
Expand Down Expand Up @@ -379,7 +380,7 @@ private void LogLineProbeResolution(string probeId, LineProbeResolveResult resul
}

Log.Debug(
"Finished resolving line probe for ProbeID {ProbeID} during {Phase}. Result was '{Status}'. Reason was '{Reason}'. Message was: '{Message}'. ProbeFile={ProbeFile} ProbeLine={ProbeLine} RawLines={RawLines} ResolvedSourceFile={ResolvedSourceFile} AssemblyName={AssemblyName} AssemblyLocation={AssemblyLocation} ModuleVersionId={ModuleVersionId} ExceptionType={ExceptionType} LoadedAssemblies={LoadedAssemblies} SymbolicatedAssemblies={SymbolicatedAssemblies} SameFileNameMatches={SameFileNameMatches} SameFileNameExamples={SameFileNameExamples}",
"Finished resolving line probe for ProbeID {ProbeID} during {Phase}. Result was '{Status}'. Reason was '{Reason}'. Message was: '{Message}'. ProbeFile={ProbeFile} ProbeLine={ProbeLine} RawLines={RawLines} ResolvedSourceFile={ResolvedSourceFile} PathMatchType={PathMatchType} MatchingTrailingSegments={MatchingTrailingSegments} FallbackFailureReason={FallbackFailureReason} QualifiedFallbackMatches={QualifiedFallbackMatches} AssemblyName={AssemblyName} AssemblyLocation={AssemblyLocation} ModuleVersionId={ModuleVersionId} ExceptionType={ExceptionType} LoadedAssemblies={LoadedAssemblies} SymbolicatedAssemblies={SymbolicatedAssemblies} SameFileNameMatches={SameFileNameMatches} SameFileNameExamples={SameFileNameExamples}",
[
probeId,
phase,
Expand All @@ -390,6 +391,10 @@ private void LogLineProbeResolution(string probeId, LineProbeResolveResult resul
diagnostics.ProbeLine,
diagnostics.RawLines,
diagnostics.ResolvedSourceFile,
diagnostics.PathMatchType,
diagnostics.MatchingTrailingSegments,
diagnostics.FallbackFailureReason,
diagnostics.QualifiedFallbackMatchCount,
diagnostics.AssemblyName,
diagnostics.AssemblyLocation,
diagnostics.ModuleVersionId,
Expand All @@ -414,10 +419,11 @@ private void CheckUnboundProbes(object? sender, AssemblyLoadEventArgs args)
// Initialize these lists only when there is at least one unbound probe that becomes bound, to reduce unnecessary allocations.
List<NativeLineProbeDefinition>? lineProbes = null;
List<ProbeDefinition>? noLongerUnboundProbes = null;
var diagnosticLevel = Log.IsEnabled(LogEventLevel.Debug) ? LineProbeDiagnosticLevel.Full : LineProbeDiagnosticLevel.Minimal;

foreach (var unboundProbe in _unboundProbes)
{
var result = _lineProbeResolver.TryResolveLineProbe(unboundProbe, out var location);
var result = _lineProbeResolver.TryResolveLineProbe(unboundProbe, out var location, diagnosticLevel);
if (result.Status == LiveProbeResolveStatus.Bound)
{
lineProbes ??= new List<NativeLineProbeDefinition>();
Expand All @@ -430,7 +436,7 @@ private void CheckUnboundProbes(object? sender, AssemblyLoadEventArgs args)
{
var diagnostics = result.Diagnostics;
Log.Debug(
"Rechecked unbound line probe for ProbeID {ProbeId} after assembly load {AssemblyName}. Result was '{Status}'. Reason was '{Reason}'. Message was: '{Message}'. ProbeFile={ProbeFile} ProbeLine={ProbeLine} RawLines={RawLines} ResolvedSourceFile={ResolvedSourceFile} AssemblyName={ResolvedAssemblyName} AssemblyLocation={ResolvedAssemblyLocation} ModuleVersionId={ModuleVersionId} ExceptionType={ExceptionType} LoadedAssemblies={LoadedAssemblies} SymbolicatedAssemblies={SymbolicatedAssemblies} SameFileNameMatches={SameFileNameMatches} SameFileNameExamples={SameFileNameExamples}",
"Rechecked unbound line probe for ProbeID {ProbeId} after assembly load {AssemblyName}. Result was '{Status}'. Reason was '{Reason}'. Message was: '{Message}'. ProbeFile={ProbeFile} ProbeLine={ProbeLine} RawLines={RawLines} ResolvedSourceFile={ResolvedSourceFile} PathMatchType={PathMatchType} MatchingTrailingSegments={MatchingTrailingSegments} FallbackFailureReason={FallbackFailureReason} QualifiedFallbackMatches={QualifiedFallbackMatches} AssemblyName={ResolvedAssemblyName} AssemblyLocation={ResolvedAssemblyLocation} ModuleVersionId={ModuleVersionId} ExceptionType={ExceptionType} LoadedAssemblies={LoadedAssemblies} SymbolicatedAssemblies={SymbolicatedAssemblies} SameFileNameMatches={SameFileNameMatches} SameFileNameExamples={SameFileNameExamples}",
[
unboundProbe.Id,
args.LoadedAssembly.GetName().Name,
Expand All @@ -441,6 +447,10 @@ private void CheckUnboundProbes(object? sender, AssemblyLoadEventArgs args)
diagnostics?.ProbeLine,
diagnostics?.RawLines,
diagnostics?.ResolvedSourceFile,
diagnostics?.PathMatchType,
diagnostics?.MatchingTrailingSegments,
diagnostics?.FallbackFailureReason,
diagnostics?.QualifiedFallbackMatchCount,
diagnostics?.AssemblyName,
diagnostics?.AssemblyLocation,
diagnostics?.ModuleVersionId,
Expand Down
2 changes: 1 addition & 1 deletion tracer/src/Datadog.Trace/Debugger/ILineProbeResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ namespace Datadog.Trace.Debugger
/// </summary>
internal interface ILineProbeResolver
{
LineProbeResolveResult TryResolveLineProbe(ProbeDefinition probe, out LineProbeResolver.BoundLineProbeLocation? location);
LineProbeResolveResult TryResolveLineProbe(ProbeDefinition probe, out LineProbeResolver.BoundLineProbeLocation? location, LineProbeDiagnosticLevel diagnosticLevel = LineProbeDiagnosticLevel.Full);
}
}
Loading
Loading