Я хочу разместить точки останова с помощью команды !mbm
из sosex.dll
для каждого метода из пространства имен CustomSpace
. Но как это сделать?
PlayWithReference
- название проекта.
Я пытался с помощью команды !lm
посмотреть, какие модули загружены
0:000> lm
start end module name
00f60000 00f68000 PlayWithReference (deferred)
72480000 724d4000 MSCOREE (deferred)
73fc0000 74090000 KERNEL32 (deferred)
760f0000 762c8000 KERNELBASE (deferred)
76f00000 7708c000 ntdll (export symbols) C:\windows\SYSTEM32\ntdll.dll
Затем с помощью команда x
я наблюдал функции из модуля
0:000> x PlayWithReference!*
*** WARNING: Unable to verify checksum for PlayWithReference.exe
<MSIL:00f60059 > PlayWithReference!Foo2 (void)
<MSIL:00f60071 > PlayWithReference!Main (void)
<MSIL:00f60026 > PlayWithReference!Foo1 (void)
<MSIL:00f6012f > PlayWithReference!<Foo1>b__1_0 (void)
<MSIL:00f6000f > PlayWithReference!get_Address (void)
<MSIL:00f60016 > PlayWithReference!set_Address (void)
<MSIL:00f60007 > PlayWithReference!set_Name (void)
<MSIL:00f60000 > PlayWithReference!get_Name (void)
<MSIL:00f6001e > PlayWithReference!Foo (void)
x
- команда, возвращающая имена функций из модуля, но не имеющая информации о пространстве имен.
Если я буду использовать !mbm CustomSpace.Program.Foo
это установит точку останова и будет работать правильно. Но без пространства имен я могу сделать только что-то вроде !mbm *Foo
, в этом случае он установит точки останова для всех функций с таким именем. Как это сделать?
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace NotWorkingName
{
public class Employee
{
public string Name { get; set; }
public string Address { get; set; }
}
class Program
{
public static void Foo()
{
Employee employee = new Employee();
}
public static void Foo1()
{
var t = Task.Factory.StartNew(() =>
{
for (int i = 0; i < 3; i++)
{
Foo2();
}
});
t.Wait();
}
public static void Foo2()
{
Thread.Sleep(1000);
Console.WriteLine("Foo2");
}
static void Main(string[] args)
{
List<string> TestReferences = new List<string>();
for (int i = 0; i < 100000; i++)
{
TestReferences.Add(i.ToString());
}
Employee employee = new Employee();
employee.Name = "Test";
employee.Name = "Test1";
Console.WriteLine(employee.Name);
Foo1();
Employee employee1 = new Employee();
Employee employee2 = new Employee();
Employee employee3 = new Employee();
Employee employee4 = new Employee();
Employee employee5 = new Employee();
Employee employee6 = new Employee();
Employee employee7 = new Employee();
Employee employee8 = new Employee();
Employee employee9 = new Employee();
Employee employee10 = new Employee();
Employee employee11 = new Employee();
Foo();
Console.Write("The end");
}
}
}