Skip to content

Commit 08c6601

Browse files
committed
Remove either or line numbers, add GetILOffsetFromAddressMap for Desktop CLR
1 parent 1373582 commit 08c6601

7 files changed

Lines changed: 151 additions & 33 deletions

File tree

src/SOS/Strike/util.cpp

Lines changed: 109 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4649,6 +4649,88 @@ GetClrMethodInstance(
46494649
return (Status == S_OK || FAILED(Status)) ? Status : E_NOINTERFACE;
46504650
}
46514651

4652+
//
4653+
// Searches the IL address map for the entry containing the given native offset.
4654+
// Fallback for older runtimes where GetILOffsetsByAddress is buggy or unsupported.
4655+
HRESULT
4656+
GetILOffsetFromAddressMap(
4657+
___in IXCLRDataMethodInstance* Method,
4658+
___in ULONG64 nativeOffset,
4659+
___out PULONG32 MethodOffs)
4660+
{
4661+
HRESULT Status;
4662+
CLRDATA_IL_ADDRESS_MAP MapLocal[16];
4663+
CLRDATA_IL_ADDRESS_MAP* Map = MapLocal;
4664+
ULONG32 MapCount = ARRAY_SIZE(MapLocal);
4665+
ULONG32 MapNeeded;
4666+
4667+
for (;;)
4668+
{
4669+
if ((Status = Method->GetILAddressMap(MapCount, &MapNeeded, Map)) != S_OK)
4670+
{
4671+
if (Map != MapLocal)
4672+
{
4673+
delete[] Map;
4674+
}
4675+
return Status;
4676+
}
4677+
4678+
if (MapNeeded <= MapCount)
4679+
{
4680+
break;
4681+
}
4682+
4683+
// Need more map entries.
4684+
if (Map != MapLocal)
4685+
{
4686+
delete[] Map;
4687+
return E_UNEXPECTED;
4688+
}
4689+
4690+
Map = new CLRDATA_IL_ADDRESS_MAP[MapNeeded];
4691+
if (!Map)
4692+
{
4693+
return E_OUTOFMEMORY;
4694+
}
4695+
4696+
MapCount = MapNeeded;
4697+
}
4698+
4699+
// Search for the entry whose native address range contains nativeOffset.
4700+
// The last map entry sometimes has a bogus endAddress (e.g., wrapping back to
4701+
// the method start). Handle this by treating any entry where endAddress <=
4702+
// startAddress as extending to infinity (the end of the method code).
4703+
Status = E_FAIL;
4704+
for (size_t i = 0; i < MapNeeded; i++)
4705+
{
4706+
bool inRange;
4707+
if (Map[i].endAddress > Map[i].startAddress)
4708+
{
4709+
// Normal range.
4710+
inRange = (Map[i].startAddress <= nativeOffset && nativeOffset < Map[i].endAddress);
4711+
}
4712+
else
4713+
{
4714+
// Malformed/last entry: endAddress <= startAddress. Treat as open-ended.
4715+
inRange = (Map[i].startAddress <= nativeOffset);
4716+
}
4717+
4718+
if (inRange)
4719+
{
4720+
*MethodOffs = Map[i].ilOffset;
4721+
Status = S_OK;
4722+
break;
4723+
}
4724+
}
4725+
4726+
if (Map != MapLocal)
4727+
{
4728+
delete[] Map;
4729+
}
4730+
4731+
return Status;
4732+
}
4733+
46524734
//
46534735
// Enumerates over the IL address map associated with the passed in
46544736
// managed method, and returns the highest non-epilog offset.
@@ -4749,33 +4831,39 @@ ConvertNativeToIlOffset(
47494831
}
47504832
}
47514833

4752-
if ((Status = pMethodInst->GetILOffsetsByAddress(nativeOffset, 1, NULL, methodOffs)) != S_OK)
4834+
// Try the IL address map first. On older runtimes (pre-.NET 5.0), GetILOffsetsByAddress
4835+
// has a bug where it returns incorrect IL offsets. GetILAddressMap returns the raw mapping
4836+
// table which we can search correctly ourselves.
4837+
Status = GetILOffsetFromAddressMap(pMethodInst, nativeOffset, methodOffs);
4838+
if (Status != S_OK)
47534839
{
4754-
ExtDbgOut("ConvertNativeToIlOffset(%p): GetILOffsetsByAddress FAILED %08x\n", nativeOffset, Status);
4755-
*methodOffs = 0;
4840+
// Fallback to GetILOffsetsByAddress if the map is unavailable.
4841+
if ((Status = pMethodInst->GetILOffsetsByAddress(nativeOffset, 1, NULL, methodOffs)) != S_OK)
4842+
{
4843+
ExtDbgOut("ConvertNativeToIlOffset(%p): GetILOffsetsByAddress FAILED %08x\n", nativeOffset, Status);
4844+
*methodOffs = 0;
4845+
}
47564846
}
4757-
else
4847+
4848+
switch((LONG)*methodOffs)
47584849
{
4759-
switch((LONG)*methodOffs)
4760-
{
4761-
case CLRDATA_IL_OFFSET_NO_MAPPING:
4762-
return E_NOINTERFACE;
4850+
case CLRDATA_IL_OFFSET_NO_MAPPING:
4851+
return E_NOINTERFACE;
47634852

4764-
case CLRDATA_IL_OFFSET_PROLOG:
4765-
// Treat all of the prologue as part of
4766-
// the first source line.
4767-
*methodOffs = 0;
4768-
break;
4853+
case CLRDATA_IL_OFFSET_PROLOG:
4854+
// Treat all of the prologue as part of
4855+
// the first source line.
4856+
*methodOffs = 0;
4857+
break;
47694858

4770-
case CLRDATA_IL_OFFSET_EPILOG:
4771-
// Back up until we find the last real
4772-
// IL offset.
4773-
if ((Status = GetLastMethodIlOffset(pMethodInst, methodOffs)) != S_OK)
4774-
{
4775-
return Status;
4776-
}
4777-
break;
4859+
case CLRDATA_IL_OFFSET_EPILOG:
4860+
// Back up until we find the last real
4861+
// IL offset.
4862+
if ((Status = GetLastMethodIlOffset(pMethodInst, methodOffs)) != S_OK)
4863+
{
4864+
return Status;
47784865
}
4866+
break;
47794867
}
47804868

47814869
return pMethodInst->GetTokenAndScope(methodToken, ppModule);

src/tests/SOS.UnitTests/Scripts/DivZero.script

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ VERIFY:\[.*[\\|/]Debuggees[\\|/].*DivZero[\\|/]DivZero\.cs @ 24\s*\]\s*
3737
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+[Dd]iv[Zz]ero.*!C\.F2(\(.*\))?\+0x<HEXVAL>\s+
3838
VERIFY:\[.*[\\|/]Debuggees[\\|/].*DivZero[\\|/]DivZero\.cs @ 36\s*\]\s*
3939
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+[Dd]iv[Zz]ero.*!C\.Main(\(.*\))?\+0x<HEXVAL>\s+
40-
VERIFY:\[.*[\\|/]Debuggees[\\|/].*DivZero[\\|/]DivZero\.cs @ (57|56)\s*\]\s*
40+
VERIFY:\[.*[\\|/]Debuggees[\\|/].*DivZero[\\|/]DivZero\.cs @ 57\s*\]\s*
4141

4242
# Verify that Threads (clrthreads) works
4343
SOSCOMMAND:clrthreads
@@ -57,4 +57,4 @@ VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
5757
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+(\*\*\* WARNING: Unable to verify checksum for DivZero.exe\s*)?C\.DivideByZero(\(.*\))?\s+\[(?i:.*[\\|/]DivZero\.cs) @ 15\s*\]\s+
5858
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+C\.F3(\(.*\))?\s+\[(?i:.*[\\|/]DivZero\.cs) @ 24\s*\]\s+
5959
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+C\.F2(\(.*\))?\s+\[(?i:.*[\\|/]DivZero\.cs) @ 36\s*\]\s+
60-
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+C\.Main(\(.*\))?\s+\[(?i:.*[\\|/]DivZero\.cs) @ (57|56)\s*\]\s+
60+
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+C\.Main(\(.*\))?\s+\[(?i:.*[\\|/]DivZero\.cs) @ 57\s*\]\s+

src/tests/SOS.UnitTests/Scripts/NestedExceptionTest.script

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@ VERIFY:InnerException:\s+System\.FormatException, Use !?printexception <HEXVAL>
9393
VERIFY:StackTrace \(generated\):
9494
VERIFY:\s+SP\s+IP\s+Function\s+
9595
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+[Nn]ested[Ee]xception[Tt]est.*!NestedExceptionTest\.Program\.Main(\(.*\))?\+0x<HEXVAL>\s*
96+
IFDEF:DESKTOP
9697
VERIFY:\[.*[\\|/]Debuggees[\\|/].*[Nn]ested[Ee]xception[Tt]est[\\|/][Nn]ested[Ee]xception[Tt]est\.cs @ (11|20)\s*\]\s*
98+
ENDIF:DESKTOP
99+
!IFDEF:DESKTOP
100+
VERIFY:\[.*[\\|/]Debuggees[\\|/].*[Nn]ested[Ee]xception[Tt]est[\\|/][Nn]ested[Ee]xception[Tt]est\.cs @ 20\s*\]\s*
101+
ENDIF:DESKTOP
97102
VERIFY:(StackTraceString: <none>\s+)?
98103
VERIFY:HResult:\s+80131509\s+
99104
VERIFY:There are nested exceptions on this thread. Run with -nested for details
@@ -114,4 +119,9 @@ SOSCOMMAND:ClrStack
114119
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
115120
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
116121
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+NestedExceptionTest\.Program\.Main(\(.*\))?\s*
122+
IFDEF:DESKTOP
117123
VERIFY:\[.*[\\|/]Debuggees[\\|/].*[Nn]ested[Ee]xception[Tt]est[\\|/][Nn]ested[Ee]xception[Tt]est\.cs @ (11|20)\s*\]\s*
124+
ENDIF:DESKTOP
125+
!IFDEF:DESKTOP
126+
VERIFY:\[.*[\\|/]Debuggees[\\|/].*[Nn]ested[Ee]xception[Tt]est[\\|/][Nn]ested[Ee]xception[Tt]est\.cs @ 20\s*\]\s*
127+
ENDIF:DESKTOP

src/tests/SOS.UnitTests/Scripts/OtherCommands.script

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo2\(.*\)\s+\[(?i:.*[\\
4343

4444
CONTINUE
4545
SOSCOMMAND:ClrStack
46-
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo4\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ (37|57)\]\s*
46+
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo4\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 37\]\s*
4747

4848
ENDIF:UNIX_SINGLE_FILE_APP
4949
ENDIF:ALPINE

src/tests/SOS.UnitTests/Scripts/StackAndOtherTests.script

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ SOSCOMMAND:SOSStatus
6767
SOSCOMMAND:ClrStack
6868
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
6969
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
70-
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>.*\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ (53|57)\]\s*
70+
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>.*\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 57\]\s*
7171
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo2\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 32\]\s*
7272
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo1\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 27\]\s*
7373
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 22\]\s*
@@ -93,7 +93,7 @@ ENDIF:MAJOR_RUNTIME_VERSION_GE_7
9393
SOSCOMMAND:ClrStack -f
9494
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
9595
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
96-
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.(dll|exe)!SymbolTestApp\.Program\.Foo4\(System\.String\)\s+\+\s+<DECVAL>\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ (53|57)\]\s*
96+
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.(dll|exe)!SymbolTestApp\.Program\.Foo4\(System\.String\)\s+\+\s+<DECVAL>\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 57\]\s*
9797
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.(dll|exe)!SymbolTestApp\.Program\.Foo2\(.*\)\s+\+\s+<DECVAL>\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 32\]\s*
9898
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.(dll|exe)!SymbolTestApp\.Program\.Foo1\(.*\)\s+\+\s+<DECVAL>\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 27\]\s*
9999
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.(dll|exe)!SymbolTestApp\.Program\.Main\(.*\)\s+\+\s+<DECVAL>\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 22\]\s*
@@ -102,7 +102,7 @@ VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.(dll|exe)!SymbolTestApp\.Program\
102102
SOSCOMMAND:ClrStack -a
103103
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
104104
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
105-
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ (53|57)\]\s*
105+
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 57\]\s*
106106
VERIFY:\s+PARAMETERS:\s+
107107
VERIFY:\s+dllPath \(0x<HEXVAL>\) = 0x<HEXVAL>\s+
108108
VERIFY:.*\s+LOCALS:\s+
@@ -116,7 +116,7 @@ SOSCOMMAND:ClrStack -r
116116
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
117117
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
118118

119-
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ (53|57)\]\s*
119+
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 57\]\s*
120120
IFDEF:ARM
121121
VERIFY:\s+r0=<HEXVAL>\s+r1=<HEXVAL>\s+r2=<HEXVAL>\s+
122122
ENDIF:ARM
@@ -234,7 +234,7 @@ ENDIF:DOTNETDUMP
234234
SOSCOMMAND:ClrStack
235235
SOSCOMMAND:IP2MD <POUT>.*\s+(<HEXVAL>)\s+SymbolTestApp\.Program\.Foo4.*\s+<POUT>
236236
VERIFY:.*\s+Method Name:\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+
237-
VERIFY:.*\s+Source file:\s+(?i:.*[\\|/]SymbolTestApp\.cs) @ (53|57)\s+
237+
VERIFY:.*\s+Source file:\s+(?i:.*[\\|/]SymbolTestApp\.cs) @ 57\s+
238238

239239
# Verify that DumpIL works (depends on the IP2MD right above)
240240
SOSCOMMAND:DumpIL <POUT>\s*MethodDesc:\s+(<HEXVAL>)\s*<POUT>
@@ -254,7 +254,7 @@ SOSCOMMAND:clru <POUT>\s*MethodDesc:\s+(<HEXVAL>)\s*<POUT>
254254
VERIFY:\s*Normal JIT generated code\s+
255255
VERIFY:\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+
256256
VERIFY:\s+Begin\s+<HEXVAL>,\s+size\s+<HEXVAL>\s+
257-
VERIFY:\s+(?i:.*[\\|/]SymbolTestApp\.cs) @ (53|57):\s+
257+
VERIFY:\s+(?i:.*[\\|/]SymbolTestApp\.cs) @ 57:\s+
258258

259259
# Verify that "u" with no line info works
260260
SOSCOMMAND:clru -n <PREVPOUT>
@@ -267,7 +267,7 @@ SOSCOMMAND:clru -o <PREVPOUT>
267267
VERIFY:\s*Normal JIT generated code\s+
268268
VERIFY:\s+SymbolTestApp\.Program\.Foo4\(System\.String\)\s+
269269
VERIFY:\s+Begin\s+<HEXVAL>,\s+size\s+<HEXVAL>\s+
270-
VERIFY:\s+(?i:.*[\\|/]SymbolTestApp\.cs) @ (53|57):\s+
270+
VERIFY:\s+(?i:.*[\\|/]SymbolTestApp\.cs) @ 57:\s+
271271

272272
ENDIF:DOTNETDUMP
273273

src/tests/SOS.UnitTests/Scripts/StackTests.script

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@ ENDIF:ALPINE
2020
SOSCOMMAND:ClrStack
2121
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
2222
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
23+
IFDEF:DESKTOP
2324
VERIFY:\s+<HEXVAL>\s+<HEXVAL>.*\s+NestedExceptionTest\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ (11|20)\s*\]\s+
25+
ENDIF:DESKTOP
26+
!IFDEF:DESKTOP
27+
VERIFY:\s+<HEXVAL>\s+<HEXVAL>.*\s+NestedExceptionTest\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ 20\s*\]\s+
28+
ENDIF:DESKTOP
2429
IFDEF:64BIT
2530
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>\s+NestedExceptionTest\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ 16\s*\]\s+
2631
ENDIF:64BIT
@@ -42,7 +47,12 @@ ENDIF:DOTNETDUMP
4247
SOSCOMMAND:ClrStack -f
4348
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
4449
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
50+
IFDEF:DESKTOP
4551
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>\s+(?i:NestedExceptionTest.*)!NestedExceptionTest\.Program\.Main\(.*\)\s+\+\s+<DECVAL>\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ (11|20)\s*\]\s+
52+
ENDIF:DESKTOP
53+
!IFDEF:DESKTOP
54+
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>\s+(?i:NestedExceptionTest.*)!NestedExceptionTest\.Program\.Main\(.*\)\s+\+\s+<DECVAL>\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ 20\s*\]\s+
55+
ENDIF:DESKTOP
4656
IFDEF:64BIT
4757
VERIFY:.*\s+<HEXVAL>\s+<HEXVAL>\s+(?i:NestedExceptionTest.*)!NestedExceptionTest\.Program\.Main\(.*\)\s+\+\s+<DECVAL>\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ 16\s*\]\s+
4858
ENDIF:64BIT
@@ -51,7 +61,12 @@ ENDIF:64BIT
5161
SOSCOMMAND:ClrStack -a
5262
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
5363
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
64+
IFDEF:DESKTOP
5465
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+NestedExceptionTest\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ (11|20)\s*\]\s+
66+
ENDIF:DESKTOP
67+
!IFDEF:DESKTOP
68+
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+NestedExceptionTest\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ 20\s*\]\s+
69+
ENDIF:DESKTOP
5570
VERIFY:\s+PARAMETERS:\s+
5671
VERIFY:\s+args \(0x<HEXVAL>\) = 0x<HEXVAL>\s+
5772
VERIFY:\s+LOCALS:\s+
@@ -69,7 +84,12 @@ SOSCOMMAND:ClrStack -r
6984
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
7085
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
7186

87+
IFDEF:DESKTOP
7288
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+NestedExceptionTest\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ (11|20)\s*\]\s+
89+
ENDIF:DESKTOP
90+
!IFDEF:DESKTOP
91+
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+NestedExceptionTest\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]NestedExceptionTest\.cs) @ 20\s*\]\s+
92+
ENDIF:DESKTOP
7393
IFDEF:ARM
7494
VERIFY:\s+r0=<HEXVAL>\s+r1=<HEXVAL>\s+r2=<HEXVAL>\s+
7595
ENDIF:ARM

src/tests/SOS.UnitTests/Scripts/TaskNestedException.script

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ VERIFY:\s+SP\s+IP\s+Function\s+
3030
VERIFY:\s+<HEXVAL>\s+<HEXVAL>.+RandomTest(::|\.)RandomUserTask\.<\.ctor>.+\+0x<HEXVAL>\s*
3131
!IFDEF:DESKTOP
3232
!IFDEF:TRIAGE_DUMP
33-
VERIFY:[.+[\\|/]Debuggees[\\|/].*[Tt]ask[Nn]ested[Ee]xception[\\|/][Rr]andom[Uu]ser[Ll]ibrary[\\|/][Rr]andom[Uu]ser[Tt]ask\.cs @ (19|26)\]
33+
VERIFY:[.+[\\|/]Debuggees[\\|/].*[Tt]ask[Nn]ested[Ee]xception[\\|/][Rr]andom[Uu]ser[Ll]ibrary[\\|/][Rr]andom[Uu]ser[Tt]ask\.cs @ 26\]
3434
ENDIF:TRIAGE_DUMP
3535
ENDIF:DESKTOP
3636

@@ -44,7 +44,7 @@ VERIFY:\s+SP\s+IP\s+Function\s+
4444
VERIFY:\s+<HEXVAL>\s+<HEXVAL>.+RandomTest(::|\.)RandomUserTask\.InnerException(\(\))?\+0x<HEXVAL>\s*
4545
!IFDEF:DESKTOP
4646
!IFDEF:TRIAGE_DUMP
47-
VERIFY:[.+[\\|/]Debuggees[\\|/].*[Tt]ask[Nn]ested[Ee]xception[\\|/][Rr]andom[Uu]ser[Ll]ibrary[\\|/][Rr]andom[Uu]ser[Tt]ask\.cs @ (37|38)\]
47+
VERIFY:[.+[\\|/]Debuggees[\\|/].*[Tt]ask[Nn]ested[Ee]xception[\\|/][Rr]andom[Uu]ser[Ll]ibrary[\\|/][Rr]andom[Uu]ser[Tt]ask\.cs @ 38\]
4848
ENDIF:TRIAGE_DUMP
4949
ENDIF:DESKTOP
5050
VERIFY:\s+<HEXVAL>\s+<HEXVAL>.+RandomTest(::|\.)RandomUserTask\.<\.ctor>.+\+0x<HEXVAL>\s*

0 commit comments

Comments
 (0)