Был проектик в Eclipse c Makefile и C-исходниками. Можно было нормально отлаживаться в исходниках с использованием gdb. Что добавил - clock_gettime, чтобы время исполнения померить.
В итоге, gdb останавливается на main, далее при попытке сделать step-over на первой же функции зависает в состоянии нитки «running : step». Ksysguard показывает висящий gdb, отжирающий 12% CPU и висящую задачу с 1%. Первая функция любая, в т.ч. «printf(«Hello!\n»)».
Просто запущенная из консоли прога отрабатывает OK.
Запустил gdb --tui test
, b main
, exec-file test
, run
(остановился на main), Шаг n
. Все, дальше отладка не идет. В логе повторяется:
Breakpoint 1, main (argc=<error reading variable: Cannot access memory at address 0x7fffffffddbc>, argv=<error reading variable: Cannot access memory at address 0x7fffffffddb0>)
at main.c:205
warning: Error removing breakpoint 1
Cannot remove breakpoints because program is no longer writable.
Further execution is probably impossible.
Ясно, что сегмент кода резко стал read-only. Но как, и как с этим отлаживаться?
UPD. Вот похожее гуглится. https://github.com/microsoft/vscode-cpptools/issues/11161
UPD2. Запустил sudo gdb ./test
- отладка идет. Прога статически линкуется с исходниками libkcapi. Если их выкинуть из сборки - отладка работает. Раньше, еще месяц назад, запускал эту тестовую прогу под отладчиком без всяких sudo. Кто бы объяснил WTF происходит?