Невозможно выполнить программу в GDB после SIGTRAP - PullRequest
0 голосов
/ 04 сентября 2018

Используя mingw gdb, когда я прерываю программу во время ее работы (используя метод из В GDB на MinGW, как заставить Ctrl-C остановить программу? ), gdb не может забрать оттуда.

Единственная информация о трассировке, которую я могу получить, это

#0  0x00007fffbfccd881 in ntdll!DbgBreakPoint () from /c/WINDOWS/SYSTEM32/ntdll.dll
#1  0x00007fffbfcf99fb in ntdll!DbgUiRemoteBreakin () from /c/WINDOWS/SYSTEM32/ntdll.dll
#2  0x00007fffbd473034 in KERNEL32!BaseThreadInitThunk ()
   from /c/WINDOWS/System32/KERNEL32.DLL
#3  0x00007fffbfca1431 in ntdll!RtlUserThreadStart () from /c/WINDOWS/SYSTEM32/ntdll.dll
#4  0x0000000000000000 in ?? ()

и если я попытаюсь пройти программу, я получу

Single stepping until exit from function ntdll!DbgUiRemoteBreakin,
which has no line number information.

и программа запускается до конца. Я могу нормально пройти (после точки останова), но мне не удается восстановить отладчик из SIGTRAP

1 Ответ

0 голосов
/ 05 сентября 2018

DebugBreakProcess создает новый поток в целевом процессе, который затем сигнализирует отладчику через исключительную точку останова, чтобы приостановить выполнение.

Вы можете перечислить все доступные темы с помощью info threads, а затем переключиться на другую тему с помощью thread YOUR_THREAD_NUMBER.

...