Точка останова не срабатывает в WinDBG - PullRequest
1 голос
/ 11 ноября 2019

В C # есть простая программа:

namespace Stack_and_call_x86
{
    class Program
    {
        static void Main(string[] args)
        {
            int result = Add(2,4);
        }

        static int Add (int a, int b)
        {
            int answer = a + b;
            return answer;
        }
    }
}

Я написал и скомпилировал ее в MVS 2019. Я пытаюсь отладить ее в WinDbg. Кажется, я все делаю правильно, я зарегистрировал пути к символам, указал местоположение файла .cs, использую исполняемую программу Launch. (Я использую .exe из папки Debug). Я поставил точку останова:

bp Stack_and_call_x86! main

Выдает следующее:

WARNING: Unable to verify checksum for Stack_and_call_x86.exe
Operation not supported by integrated managed debugging.
error at 'Stack_and_call_x86! main'
The breakpoint expression "Stack_and_call_x86! Main" evaluates to the inline function.
Please use bm command to set breakpoints instead of bp.

ОК, я поставил BM:

BM Stack_and_call_x86! main

Ну, похоже, установлено:

1: <MSIL: 00ca0000> @! "Stack_and_call_x86! Main"

Затем запустите и получите следующую ошибку:

ModLoad: 75e20000 75e99000 C: \ WINDOWS \ SysWOW64 \ ADVAPI32.dll
Breakpoint 1's offset expression evaluation failed.
Check for invalid symbols or bad syntax.

PS

Если я открываю файл .cs через Файл - Открыть исходный файл, и в коде ставится точка останова, то она устанавливается, но при ее запуске выдается ошибка:

Невозможно вставитьточка останова 0 на 00ca0001, ошибка Win32 0n998 «Недопустимая попытка доступа к адресу памяти». BP0 на 00ca0001 не удалось

1 Ответ

1 голос
/ 12 ноября 2019

Для меня работают следующие шаги:

  1. Скачать файл sosex.dll
  2. В WinDbg:

    2.1. Открыть исполняемый файл

    2.2. Введите следующие команды:

    • sxe ld clrjit
    • g
    • .load C: \ SOSEX \ sosex.dll (ваш путь к sosex.dll)
    • ! Mbp Program.cs 14 (Ваш файл Name.cs и строка, в которую вы хотите вставить точку останова)
    • g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...