В Windows я могу установить globalflag, чтобы связать запуск программы с отладчиком, так что даже когда я вызываю программу из скрипта, отладчик запускает мою программу и может разбиться на какой-то строке кода.
Так как же сделать это с GDB на Linux? Например, я /home/my/a.out скомпилирован с помощью опции -g от gcc, я хотел бы, чтобы кто-нибудь звонил в a.out, он будет вызываться gdb:
Должен ли я изменить какой-либо системный файл, говоря, что /home/my/a.out должен быть запущен gdb и автоматически присоединен?
Как заставить GDB автоматически присоединить его, а затем сломать на ‘main’ и запустить?
Должен ли я изменить какой-либо системный файл, говоря, что /home/my/a.out должен быть запущен gdb и автоматически присоединен?
Вам не нужно изменять какие-либо система файлы для достижения этого. изменять /home/my/a.out
вместо.
Переместить оригинальный двоичный файл на новое имя:
mv /home/my/a.out /home/my/a.out.orig
замещать /home/my/a.out
с помощью сценария оболочки:
cat > /home/my/a.out <<'EOF'
#!/bin/sh
exec gdb -ex start --args /home/my/a.out.orig "$@"EOF
chmmod +x /home/my/a.out
Как заставить GDB автоматически присоединить его, а затем сломать на ‘main’ и запустить?
Выше скрипт сделает это автоматически.
Других решений пока нет …