Skip to content

Commit a05cef5

Browse files
author
Mike McLaughlin
committed
Prepare SOS for single file support
Add defines and functions for the runtime, dac and dbi modules/dlls names. Also supports desktop CLR Add minidump retry for ERROR_PARTIAL_COPY
1 parent d42c43c commit a05cef5

25 files changed

+500
-251
lines changed

src/SOS/SOS.Hosting/SOSHost.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ struct SOSNetCoreCallbacks
157157

158158
internal readonly IDataReader DataReader;
159159

160+
const string DesktopRuntimeModuleName = "clr";
161+
160162
private static readonly string s_coreclrModuleName;
161163

162164
private readonly AnalyzeContext _analyzeContext;
@@ -1109,6 +1111,9 @@ internal int GetRegister(
11091111

11101112
internal static bool IsRuntimeModule(ModuleInfo module)
11111113
{
1114+
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && IsModuleEqual(module, DesktopRuntimeModuleName)) {
1115+
return true;
1116+
}
11121117
return IsModuleEqual(module, s_coreclrModuleName);
11131118
}
11141119

src/SOS/SOS.UnitTests/ConfigFiles/Unix/Debugger.Tests.Config.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@
117117
<Options>
118118
<Option Condition="$(OS) == Linux">
119119
<SOSPath>$(InstallDir)/libsosplugin.so</SOSPath>
120+
<DotNetDumpHost>$(RepoRootDir)/.dotnet/dotnet</DotNetDumpHost>
120121
<DotNetDumpPath>$(RootBinDir)/bin/dotnet-dump/$(TargetConfiguration)/netcoreapp2.1/publish/dotnet-dump.dll</DotNetDumpPath>
121122
<DebuggeeDumpOutputRootDir>$(DumpDir)/$(TestProduct)/$(RuntimeFrameworkVersion)/$(BuildProjectFramework)</DebuggeeDumpOutputRootDir>
122123
<DebuggeeDumpInputRootDir>$(DebuggeeDumpOutputRootDir)</DebuggeeDumpInputRootDir>

src/SOS/SOS.UnitTests/ConfigFiles/Windows/Debugger.Tests.Config.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,6 @@
128128
<HostExe>$(RepoRootDir)\.dotnet\dotnet.exe</HostExe>
129129
<HostArgs>--fx-version $(RuntimeFrameworkVersion)</HostArgs>
130130
<RuntimeSymbolsPath>$(RepoRootDir)\.dotnet\shared\Microsoft.NETCore.App\$(RuntimeFrameworkVersion)</RuntimeSymbolsPath>
131-
<SOSPath>$(InstallDir)\sos.dll</SOSPath>
132-
<DotNetDumpPath>$(RootBinDir)/bin/dotnet-dump/$(TargetConfiguration)/netcoreapp2.1/publish/dotnet-dump.dll</DotNetDumpPath>
133131
</Option>
134132
<!--
135133
Desktop Runtime (debuggees cli built)
@@ -151,10 +149,12 @@
151149
<FrameworkDirPath Condition="$(TargetArchitecture) == x64">$(WinDir)\Microsoft.Net\Framework64\v4.0.30319\</FrameworkDirPath>
152150
<FrameworkDirPath Condition="$(TargetArchitecture) != x64">$(WinDir)\Microsoft.Net\Framework\v4.0.30319\</FrameworkDirPath>
153151
<RuntimeSymbolsPath>$(FrameworkDirPath)</RuntimeSymbolsPath>
154-
<SOSPath>$(FrameworkDirPath)\sos.dll</SOSPath>
155152
</Option>
156153
</Options>
157154

155+
<SOSPath>$(InstallDir)\sos.dll</SOSPath>
156+
<DotNetDumpHost>$(RepoRootDir)\.dotnet\dotnet.exe</DotNetDumpHost>
157+
<DotNetDumpPath>$(RootBinDir)/bin/dotnet-dump/$(TargetConfiguration)/netcoreapp2.1/publish/dotnet-dump.dll</DotNetDumpPath>
158158
<DebuggeeDumpOutputRootDir>$(DumpDir)\$(TestProduct)\$(RuntimeFrameworkVersion)\$(BuildProjectFramework)</DebuggeeDumpOutputRootDir>
159159
<DebuggeeDumpInputRootDir>$(DebuggeeDumpOutputRootDir)</DebuggeeDumpInputRootDir>
160160
</Configuration>

src/SOS/SOS.UnitTests/SOS.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private async Task RunTest(string scriptName, bool testLive = true, bool testDum
7575
}
7676

7777
// With the dotnet-dump analyze tool
78-
if (information.TestConfiguration.DotNetDumpPath() != null)
78+
if (information.TestConfiguration.DotNetDumpPath() != null && (information.TestConfiguration.IsNETCore || information.DumpType != SOSRunner.DumpType.Triage))
7979
{
8080
using (SOSRunner runner = await SOSRunner.StartDebugger(information, SOSRunner.DebuggerAction.LoadDumpWithDotNetDump))
8181
{

src/SOS/SOS.UnitTests/SOSRunner.cs

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -282,9 +282,9 @@ public static async Task CreateDump(TestInformation information)
282282
ITestOutputHelper dotnetDumpOutputHelper = new IndentedTestOutputHelper(outputHelper, " ");
283283
try
284284
{
285-
if (string.IsNullOrWhiteSpace(config.HostExe) || string.IsNullOrWhiteSpace(config.DotNetDumpPath()))
285+
if (string.IsNullOrWhiteSpace(config.DotNetDumpHost()) || string.IsNullOrWhiteSpace(config.DotNetDumpPath()))
286286
{
287-
throw new SkipTestException("dotnet-dump collect needs HostExe and DotNetDumpPath config variables");
287+
throw new SkipTestException("dotnet-dump collect needs DotNetDumpHost and DotNetDumpPath config variables");
288288
}
289289

290290
// Wait until the debuggee gets started. It needs time to spin up before generating the core dump.
@@ -300,7 +300,7 @@ public static async Task CreateDump(TestInformation information)
300300
dotnetDumpArguments.Append(config.DotNetDumpPath());
301301
dotnetDumpArguments.AppendFormat(" collect --process-id {0} --output %DUMP_NAME%", processRunner.ProcessId);
302302

303-
ProcessRunner dotnetDumpRunner = new ProcessRunner(config.HostExe, ReplaceVariables(variables, dotnetDumpArguments.ToString())).
303+
ProcessRunner dotnetDumpRunner = new ProcessRunner(config.DotNetDumpHost(), ReplaceVariables(variables, dotnetDumpArguments.ToString())).
304304
WithLog(new TestRunner.TestLogger(dotnetDumpOutputHelper)).
305305
WithTimeout(TimeSpan.FromMinutes(5)).
306306
WithExpectedExitCode(0);
@@ -447,6 +447,9 @@ public static async Task<SOSRunner> StartDebugger(TestInformation information, D
447447
// Turn off warnings that can happen in the middle of a command's output
448448
initialCommands.Add(".outmask- 0x244");
449449
initialCommands.Add("!sym quiet");
450+
451+
// Turn on source/line numbers
452+
initialCommands.Add(".lines");
450453
break;
451454

452455
case NativeDebugger.Lldb:
@@ -532,15 +535,15 @@ public static async Task<SOSRunner> StartDebugger(TestInformation information, D
532535
{
533536
throw new ArgumentException($"{action} not supported for dotnet-dump testing");
534537
}
535-
if (string.IsNullOrWhiteSpace(config.HostExe))
538+
if (string.IsNullOrWhiteSpace(config.DotNetDumpHost()))
536539
{
537-
throw new ArgumentException("No HostExe in configuration");
540+
throw new ArgumentException("No DotNetDumpHost in configuration");
538541
}
539542
initialCommands.Add("setsymbolserver -directory %DEBUG_ROOT%");
540543

541544
arguments.Append(debuggerPath);
542545
arguments.Append(@" analyze %DUMP_NAME%");
543-
debuggerPath = config.HostExe;
546+
debuggerPath = config.DotNetDumpHost();
544547
break;
545548
}
546549

@@ -619,19 +622,19 @@ public async Task RunScript(string scriptRelativePath)
619622
}
620623
else if (line.StartsWith("IFDEF:"))
621624
{
622-
string define = line.Substring("IFDEF:".Length);
625+
string define = line.Substring("IFDEF:".Length).Trim();
623626
activeDefines.Add(define, true);
624627
isActiveDefineRegionEnabled = IsActiveDefineRegionEnabled(activeDefines, enabledDefines);
625628
}
626629
else if (line.StartsWith("!IFDEF:"))
627630
{
628-
string define = line.Substring("!IFDEF:".Length);
631+
string define = line.Substring("!IFDEF:".Length).Trim();
629632
activeDefines.Add(define, false);
630633
isActiveDefineRegionEnabled = IsActiveDefineRegionEnabled(activeDefines, enabledDefines);
631634
}
632635
else if (line.StartsWith("ENDIF:"))
633636
{
634-
string define = line.Substring("ENDIF:".Length);
637+
string define = line.Substring("ENDIF:".Length).Trim();
635638
if (!activeDefines.Last().Key.Equals(define))
636639
{
637640
throw new Exception("Mismatched IFDEF/ENDIF. IFDEF: " + activeDefines.Last().Key + " ENDIF: " + define);
@@ -718,10 +721,15 @@ public async Task LoadSosExtension()
718721
switch (Debugger)
719722
{
720723
case NativeDebugger.Cdb:
721-
commands.Add($".unload sos.dll");
724+
if (_config.IsDesktop)
725+
{
726+
// Force the desktop sos to be loaded and then unload it.
727+
commands.Add(".cordll -l");
728+
commands.Add(".unload sos");
729+
}
722730
commands.Add($".load {sosPath}");
723-
commands.Add(".lines");
724731
commands.Add(".reload");
732+
commands.Add(".chain");
725733
if (sosHostRuntime != null)
726734
{
727735
commands.Add($"!SetHostRuntime {sosHostRuntime}");
@@ -1133,6 +1141,11 @@ private HashSet<string> GetEnabledDefines()
11331141
{
11341142
defines.Add("ALPINE");
11351143
}
1144+
// This is a special "OR" of two conditions. Add this is easier than changing the parser to support "OR".
1145+
if (_config.IsNETCore || Debugger == NativeDebugger.DotNetDump)
1146+
{
1147+
defines.Add("NETCORE_OR_DOTNETDUMP");
1148+
}
11361149
return defines;
11371150
}
11381151

@@ -1345,6 +1358,12 @@ public static string GDBPath(this TestConfiguration config)
13451358
return TestConfiguration.MakeCanonicalPath(gdbPath);
13461359
}
13471360

1361+
public static string DotNetDumpHost(this TestConfiguration config)
1362+
{
1363+
string dotnetDumpHost = config.GetValue("DotNetDumpHost");
1364+
return TestConfiguration.MakeCanonicalPath(dotnetDumpHost);
1365+
}
1366+
13481367
public static string DotNetDumpPath(this TestConfiguration config)
13491368
{
13501369
string dotnetDumpPath = config.GetValue("DotNetDumpPath");

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Divide By Zero debugging scenario
2-
# 1) load the executable
2+
# 1) Load the executable
33
# 2) Run the executable and wait for it to crash
44
# 3) Take a dump of the executable.
55
# 4) Open the dump and compare the output

src/SOS/SOS.UnitTests/Scripts/GCTests.script

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,26 @@
33
#
44
# Commands Verified: GCWhere, GCRoot, DumpObj, DumpHeap, DumpStackObjects
55
#
6-
# 1) load sos
7-
# 2) run to the first debug break
8-
# 3) dump stack objects to get the address of GCWhere!temp
6+
# 1) Run to the first debug break
7+
# 2) Load sos
8+
# 3) Dump stack objects to get the address of GCWhere!temp
99
# 4) Run various commands on the address, verify Gen0
10-
# 5) run to the second debug break
10+
# 5) Run to the second debug break
1111
# 6) Run various commands on the address, verify Gen1
12-
# 7) run to the third debug break
12+
# 7) Run to the third debug break
1313
# 8) Run various commands on the address, verify Gen2
14-
# 9) run to the fourth debug break
14+
# 9) Run to the fourth debug break
1515
#10) Run various commands on the address, verify it is still Gen2
16-
#11) let the program run to completion
17-
18-
LOADSOS
16+
#11) Let the program run to completion
1917

2018
# Continue to the DebugBreak
2119
CONTINUE
2220
IFDEF:CDB
2321
VERIFY:Break instruction exception - code 80000003
2422
ENDIF:CDB
2523

24+
LOADSOS
25+
2626
SOSCOMMAND:DumpStackObjects
2727
VERIFY:<HEXVAL>\s+<HEXVAL>\s+System.IO.StringWriter\s+
2828

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,28 @@
77
LOADSOS
88

99
# Verify that bpmd works
10-
IFDEF:PROJECTK
1110
IFDEF:LIVE
1211
!IFDEF:MAJOR_RUNTIME_VERSION_1
1312

13+
IFDEF:DESKTOP
14+
SOSCOMMAND:bpmd NestedExceptionTest.exe NestedExceptionTest.Program.Main
15+
ENDIF:DESKTOP
16+
!IFDEF:DESKTOP
1417
SOSCOMMAND:bpmd NestedExceptionTest.dll NestedExceptionTest.Program.Main
18+
ENDIF:DESKTOP
1519
CONTINUE
20+
21+
# Unloads desktop sos and reloads new SOS
22+
IFDEF:DESKTOP
23+
LOADSOS
24+
ENDIF:DESKTOP
25+
1626
SOSCOMMAND:ClrStack
1727
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+NestedExceptionTest\.Program\.Main(\(.*\))?\s*
1828
VERIFY:\[.*[\\|/]Debuggees[\\|/](dotnet.+[\\|/])?[Nn]ested[Ee]xception[Tt]est[\\|/][Nn]ested[Ee]xception[Tt]est\.cs @ 8\s*\]\s*
1929

2030
ENDIF:MAJOR_RUNTIME_VERSION_1
2131
ENDIF:LIVE
22-
ENDIF:PROJECTK
2332

2433
CONTINUE
2534

@@ -80,10 +89,7 @@ VERIFY:InnerException:\s+System\.FormatException, Use !PrintException <HEXVAL> t
8089
VERIFY:StackTrace \(generated\):
8190
VERIFY:\s+SP\s+IP\s+Function\s+
8291
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+[Nn]ested[Ee]xception[Tt]est.*!NestedExceptionTest\.Program\.Main(\(.*\))?\+0x<HEXVAL>\s*
83-
# Desktop sos has a bug that prevents the line number/source file info from being printed.
84-
IFDEF:PROJECTK
8592
VERIFY:\[.*[\\|/]Debuggees[\\|/](dotnet.+[\\|/])?[Nn]ested[Ee]xception[Tt]est[\\|/][Nn]ested[Ee]xception[Tt]est\.cs @ 8\s*\]\s*
86-
ENDIF:PROJECTK
8793
VERIFY:(StackTraceString: <none>\s+)?
8894
VERIFY:HResult:\s+80131509\s+
8995
VERIFY:There are nested exceptions on this thread. Run with -nested for details
@@ -109,7 +115,4 @@ SOSCOMMAND:ClrStack
109115
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
110116
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
111117
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+NestedExceptionTest\.Program\.Main(\(.*\))?\s*
112-
# Desktop sos has a bug that prevents the line number/source file info from being printed.
113-
IFDEF:PROJECTK
114118
VERIFY:\[.*[\\|/]Debuggees[\\|/](dotnet.+[\\|/])?[Nn]ested[Ee]xception[Tt]est[\\|/][Nn]ested[Ee]xception[Tt]est\.cs @ 8\s*\]\s*
115-
ENDIF:PROJECTK

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

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,62 @@
55
LOADSOS
66

77
# Verify that bpmd works
8-
IFDEF:PROJECTK
98
IFDEF:LIVE
109
!IFDEF:MAJOR_RUNTIME_VERSION_1
1110

11+
IFDEF:DESKTOP
12+
SOSCOMMAND:bpmd SymbolTestApp.exe SymbolTestApp.Program.Main
13+
ENDIF:DESKTOP
14+
!IFDEF:DESKTOP
1215
SOSCOMMAND:bpmd SymbolTestApp.dll SymbolTestApp.Program.Main
16+
ENDIF:DESKTOP
17+
1318
CONTINUE
19+
20+
# Unloads desktop sos and reloads new SOS
21+
IFDEF:DESKTOP
22+
LOADSOS
23+
ENDIF:DESKTOP
24+
1425
SOSCOMMAND:ClrStack
1526
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 16\]\s*
1627

1728
SOSCOMMAND:bpmd SymbolTestApp.cs:29
29+
IFDEF:DESKTOP
30+
SOSCOMMAND:bpmd SymbolTestApp.exe SymbolTestApp.Program.Foo4
31+
ENDIF:DESKTOP
32+
!IFDEF:DESKTOP
1833
SOSCOMMAND:bpmd SymbolTestApp.dll SymbolTestApp.Program.Foo4
34+
ENDIF:DESKTOP
1935

36+
IFDEF:PROJECTK
2037
CONTINUE
2138
SOSCOMMAND:ClrStack
2239
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Main\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 16\]\s*
40+
ENDIF:PROJECTK
2341

2442
CONTINUE
2543
SOSCOMMAND:ClrStack
44+
IFDEF:DESKTOP
45+
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo2\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 29\]\s*
46+
ENDIF:DESKTOP
47+
!IFDEF:DESKTOP
2648
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo2\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 28\]\s*
49+
ENDIF:DESKTOP
2750

2851
CONTINUE
2952
SOSCOMMAND:ClrStack
3053
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+SymbolTestApp\.Program\.Foo4\(.*\)\s+\[(?i:.*[\\|/]SymbolTestApp\.cs) @ 34\]\s*
3154

3255
ENDIF:MAJOR_RUNTIME_VERSION_1
3356
ENDIF:LIVE
34-
ENDIF:PROJECTK
3557

3658
CONTINUE
3759

38-
IFDEF:PROJECTK
3960
SOSCOMMAND:SetSymbolServer -ms
4061
!IFDEF:DOTNETDUMP
4162
SOSCOMMAND:SetHostRuntime
4263
ENDIF:DOTNETDUMP
43-
ENDIF:PROJECTK
4464

4565
IFDEF:DOTNETDUMP
4666
COMMAND:clrmodules
@@ -76,10 +96,8 @@ VERIFY:\s*Parent Domain:\s+<HEXVAL>\s+
7696
VERIFY:\s*Name:\s+.*(System\.Private\.CoreLib(\.ni)?\.dll|mscorlib.dll)\s+
7797

7898
SOSCOMMAND:DumpModule <POUT>\s+Module Name\s+(<HEXVAL>)\s+.*<POUT>
79-
!IFDEF:DESKTOP
8099
VERIFY:\s*PEFile:\s+<HEXVAL>\s+
81100
VERIFY:\s*ModuleId:\s+<HEXVAL>\s+
82-
ENDIF:DESKTOP
83101
VERIFY:\s*LoaderHeap:\s+<HEXVAL>\s+
84102
VERIFY:\s*TypeDefToMethodTableMap:\s+<HEXVAL>\s+
85103

src/SOS/SOS.UnitTests/Scripts/Reflection.script

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Reflection debugging scenario
2-
# 1) load the executable
2+
# 1) Load the executable
33
# 2) Run the executable and wait for it to crash
44
# 3) Take a dump of the executable.
55
# 4) Open the dump and compare the output
@@ -38,10 +38,7 @@ VERIFY:Message:\s+(<Invalid Object>|Exception has been thrown by the target of a
3838
VERIFY:InnerException:\s+System\.Exception, Use !PrintException <HEXVAL> to see more\.\s+
3939
VERIFY:StackTrace \(generated\):\s+
4040
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+[Rr]eflection[Tt]est.*!(\$0_)?RefLoader\.Loader\.Main(\(\))?\+0x<HEXVAL>\s*
41-
# Desktop sos has a bug that prevents the line number/source file info from being printed.
42-
IFDEF:PROJECTK
4341
VERIFY:[.*[\\|/]Debuggees[\\|/](dotnet.+[\\|/])?[Rr]eflection[Tt]est[\\|/][Rr]eflection[Tt]est\.cs @ 32\s*\]
44-
ENDIF:PROJECTK
4542
VERIFY:(StackTraceString: <none>\s+)?
4643
VERIFY:HResult:\s+80131604
4744

@@ -66,7 +63,4 @@ SOSCOMMAND:ClrStack
6663
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
6764
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
6865
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+(\*\*\* WARNING: Unable to verify checksum for ReflectionTest.exe\s*)?RefLoader\.Loader\.Main(\(\))?\s*
69-
# Desktop sos has a bug that prevents the line number/source file info from being printed.
70-
IFDEF:PROJECTK
7166
VERIFY:[.*[\\|/]Debuggees[\\|/](dotnet.+[\\|/])?[Rr]eflection[Tt]est[\\|/][Rr]eflection[Tt]est\.cs @ 32\s*\]
72-
ENDIF:PROJECTK

src/SOS/SOS.UnitTests/Scripts/SimpleThrow.script

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,6 @@ SOSCOMMAND:ClrStack
5454
VERIFY:.*OS Thread Id:\s+0x<HEXVAL>\s+.*
5555
VERIFY:\s+Child\s+SP\s+IP\s+Call Site\s+
5656
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+(\*\*\* WARNING: Unable to verify checksum for SimpleThrow.exe\s*)?UserObject\.UseObject.*\s+
57-
# Desktop sos has a bug that prevents the line number/source file info from being printed.
58-
IFDEF:PROJECTK
5957
VERIFY:[.*[\\|/]Debuggees[\\|/](dotnet.+[\\|/])?SimpleThrow[\\|/]UserObject\.cs @ 18\s*\]
60-
ENDIF:PROJECTK
6158
VERIFY:\s+<HEXVAL>\s+<HEXVAL>\s+Simple\.Main\(\)\s+
62-
IFDEF:PROJECTK
6359
VERIFY:[.*[\\|/]Debuggees[\\|/](dotnet.+[\\|/])?SimpleThrow[\\|/]SimpleThrow\.cs @ 9\s*\]
64-
ENDIF:PROJECTK

0 commit comments

Comments
 (0)