Я пытаюсь использовать функции записи и воспроизведения процессов GDB в (многопоточной) программе C ++.В режиме record
GDB не прерывается ни на одной из установленных точек останова.Если я не нахожусь в режиме record
, я могу нормально работать с GDB (установить и разорвать на контрольных точках, шаг / следующий / продолжить и т.просто continue
после начала записи:
(gdb) record
(gdb) **I hit the Return key here**
The process is already being recorded. Use "record stop" to stop recording first.
(gdb) continue
Continuing.
Couldn't get registers: No such process.
(gdb) Couldn't get registers: No such process.
(gdb) continue
Continuing.
Cannot execute this command while the selected thread is running.
(gdb) info threads
Id Target Id Frame
1 Thread 0x7fad1826a740 (LWP 161777) "athena.py" (running)
2 Thread 0x7faccba31700 (LWP 162405) "athena.py" (running)
3 Thread 0x7faccc432700 (LWP 162404) "athena.py" (running)
4 Thread 0x7facf6c1d740 (LWP 161852) "athena.py" (running)
* 5 Thread 0x7facfcc36700 (LWP 161851) "athena.py" (running)
Если я установлю точку останова, тогда continue
, я все равно получаю те же сообщения об ошибках.info threads
также не показывает, что какой-либо поток достиг точки останова (все они обозначены как работающие).
athena.py
- это интерфейс Python для программы на C ++.Известно, что базовая функциональность GDB довольно хорошо работает с этим интерфейсом и программой.