Skip to content

Commit 138b3db

Browse files
committed
Fix missing pdb info in async methods and update approvals
1 parent d4eeedb commit 138b3db

11 files changed

+64
-19
lines changed

tracer/src/Datadog.Trace/Debugger/Symbols/SymbolExtractor.cs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -426,19 +426,27 @@ protected virtual Model.Scope CreateMethodScope(TypeDef type, MethodDef method)
426426
return null;
427427
}
428428

429-
var generatedMethodName = generatedMethod.Name.String;
430-
if (generatedMethodName[0] != '<')
429+
if (generatedMethod.CustomDebugInfos.FirstOrDefault(cdi => cdi is PdbAsyncMethodCustomDebugInfo) is PdbAsyncMethodCustomDebugInfo asyncMethodCustomDebugInfo)
431430
{
432-
return null;
431+
if (!method.Name.String.Equals(asyncMethodCustomDebugInfo.KickoffMethod.Name.String))
432+
{
433+
return null;
434+
}
433435
}
434-
435-
var notGeneratedMethodName = generatedMethodName.Substring(1, generatedMethodName.IndexOf('>') - 1);
436-
if (!method.Name.String.Equals(notGeneratedMethodName))
436+
else
437437
{
438-
return null;
439-
}
438+
var generatedMethodName = generatedMethod.Name.String;
439+
if (generatedMethodName[0] != '<')
440+
{
441+
return null;
442+
}
440443

441-
// todo: check state machine to add fields even if there is not pdb?
444+
var notGeneratedMethodName = generatedMethodName.Substring(1, generatedMethodName.IndexOf('>') - 1);
445+
if (!method.Name.String.Equals(notGeneratedMethodName))
446+
{
447+
return null;
448+
}
449+
}
442450

443451
var closureMethodScope = CreateMethodScope(nestedType, generatedMethod);
444452
closureMethodScope.Name = method.Name.String;

tracer/src/Datadog.Trace/Debugger/Symbols/SymbolPdbExtractor.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,19 @@ protected override Model.Scope CreateMethodScope(TypeDef type, MethodDef method)
151151
Array.Copy(localsSymbol, 0, allLocals, 0, localsCount);
152152
}
153153

154+
var localName = field.Name.String;
155+
if (localName[0] == '<')
156+
{
157+
var endNameIndex = localName.IndexOf('>');
158+
if (endNameIndex > 1)
159+
{
160+
localName = localName.Substring(1, endNameIndex - 1);
161+
}
162+
}
163+
154164
allLocals[localsCount] = new Symbol
155165
{
156-
Name = field.Name.String,
166+
Name = localName,
157167
Type = field.FieldType.FullName,
158168
SymbolType = SymbolType.Local,
159169
Line = startLine

tracer/test/Datadog.Trace.Tests/Debugger/SymbolsTests/SymbolExtractor/Approvals/SymbolExtractorTest.Datadog.Trace.Tests.Datadog.Trace.Tests.Debugger.SymbolsTests.TestSamples.AsyncMethod.verified.txt

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,41 @@
5656
}
5757
],
5858
"scopes": []
59+
},
60+
{
61+
"scope_type": "closure",
62+
"name": "GetTime",
63+
"source_file": "C:\\dev\\Datadog\\dd-trace-dotnet\\tracer\\test\\Datadog.Trace.Tests\\Debugger\\SymbolsTests\\TestSamples\\AsyncMethod.cs",
64+
"start_line": 14,
65+
"end_line": 25,
66+
"language_specifics": {
67+
"access_modifiers": [
68+
"Private"
69+
],
70+
"annotations": [
71+
"Final Virtual"
72+
],
73+
"return_type": "System.Void",
74+
"start_column": 9,
75+
"end_column": 10
76+
},
77+
"symbols": [
78+
{
79+
"name": "result",
80+
"type": "System.Int32",
81+
"symbol_type": "local",
82+
"line": 14
83+
}
84+
],
85+
"scopes": []
5986
}
6087
]
6188
},
6289
{
6390
"scope_type": "method",
6491
"name": ".ctor",
6592
"start_line": 0,
66-
"end_line": 2147483647,
93+
"end_line": 0,
6794
"language_specifics": {
6895
"return_type": "System.Void",
6996
"start_column": 0,

tracer/test/Datadog.Trace.Tests/Debugger/SymbolsTests/SymbolExtractor/Approvals/SymbolExtractorTest.Datadog.Trace.Tests.Datadog.Trace.Tests.Debugger.SymbolsTests.TestSamples.ComprehensiveLinqWithClosure.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"scope_type": "method",
4747
"name": ".ctor",
4848
"start_line": 0,
49-
"end_line": 2147483647,
49+
"end_line": 0,
5050
"language_specifics": {
5151
"return_type": "System.Void",
5252
"start_column": 0,

tracer/test/Datadog.Trace.Tests/Debugger/SymbolsTests/SymbolExtractor/Approvals/SymbolExtractorTest.Datadog.Trace.Tests.Datadog.Trace.Tests.Debugger.SymbolsTests.TestSamples.ComprehensiveLinqWithoutClosure.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
"scope_type": "method",
5353
"name": ".ctor",
5454
"start_line": 0,
55-
"end_line": 2147483647,
55+
"end_line": 0,
5656
"language_specifics": {
5757
"return_type": "System.Void",
5858
"start_column": 0,

tracer/test/Datadog.Trace.Tests/Debugger/SymbolsTests/SymbolExtractor/Approvals/SymbolExtractorTest.Datadog.Trace.Tests.Datadog.Trace.Tests.Debugger.SymbolsTests.TestSamples.EmptyType.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"scope_type": "method",
2626
"name": ".ctor",
2727
"start_line": 0,
28-
"end_line": 2147483647,
28+
"end_line": 0,
2929
"language_specifics": {
3030
"return_type": "System.Void",
3131
"start_column": 0,

tracer/test/Datadog.Trace.Tests/Debugger/SymbolsTests/SymbolExtractor/Approvals/SymbolExtractorTest.Datadog.Trace.Tests.Datadog.Trace.Tests.Debugger.SymbolsTests.TestSamples.LambdaWithClosure.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
"scope_type": "method",
7878
"name": ".ctor",
7979
"start_line": 0,
80-
"end_line": 2147483647,
80+
"end_line": 0,
8181
"language_specifics": {
8282
"return_type": "System.Void",
8383
"start_column": 0,

tracer/test/Datadog.Trace.Tests/Debugger/SymbolsTests/SymbolExtractor/Approvals/SymbolExtractorTest.Datadog.Trace.Tests.Datadog.Trace.Tests.Debugger.SymbolsTests.TestSamples.LambdaWithoutClosure.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
"scope_type": "method",
7878
"name": ".ctor",
7979
"start_line": 0,
80-
"end_line": 2147483647,
80+
"end_line": 0,
8181
"language_specifics": {
8282
"return_type": "System.Void",
8383
"start_column": 0,

tracer/test/Datadog.Trace.Tests/Debugger/SymbolsTests/SymbolExtractor/Approvals/SymbolExtractorTest.Datadog.Trace.Tests.Datadog.Trace.Tests.Debugger.SymbolsTests.TestSamples.LocalFunctionWithClosure.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
"scope_type": "method",
7373
"name": ".ctor",
7474
"start_line": 0,
75-
"end_line": 2147483647,
75+
"end_line": 0,
7676
"language_specifics": {
7777
"return_type": "System.Void",
7878
"start_column": 0,

tracer/test/Datadog.Trace.Tests/Debugger/SymbolsTests/SymbolExtractor/Approvals/SymbolExtractorTest.Datadog.Trace.Tests.Datadog.Trace.Tests.Debugger.SymbolsTests.TestSamples.LocalFunctionWithoutClosure.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
"scope_type": "method",
7575
"name": ".ctor",
7676
"start_line": 0,
77-
"end_line": 2147483647,
77+
"end_line": 0,
7878
"language_specifics": {
7979
"return_type": "System.Void",
8080
"start_column": 0,

0 commit comments

Comments
 (0)