Я пытаюсь установить точку останова при каждом вызове функции kernel32.dll.Аналогично этому Получите стеки вызовов при вызове функции kernel32.dll
Я назначаю точку останова функции, но после назначения у нее есть символ, говорящий, что они никогда не будут нажаты, и онинет.Мне нужно сделать это в x86, но я не могу даже заставить этот простой 64-битный работать.
Я проверил «Серверы Microsoft Symbol» в Сервис-> Параметры / Отладка / Символы, но каталог кэша все еще пуст.Я думаю, что это проблема, но не уверен.Как убедиться, что символы отладки dll загружены правильно?
Пример кода.
using System;
using System.Runtime.InteropServices;
namespace DebugAPI
{
class Program
{
[DllImport("kernel32.dll")]
public static extern System.UInt32 GetCurrentProcessorNumber();
static void Main(string[] args)
{
var num = GetCurrentProcessorNumber();
Console.WriteLine("Proc# " + num.ToString());
}
}
}
Я попробовал два способа сделать Точки останова для 64-битных функций.Kernel32! GetCurrentProcessorNumber {,, kernel32.dll} GetCurrentProcessorNumber
Для x86 я попробовал следующее {,, kernel32.dll} _GetCurrentProcessorNumber @ 4 // Не уверен, правильно ли @ 4