Могу ли я установить программу Linux для запуска и присоединения с помощью GDB?

В Windows я могу установить globalflag, чтобы связать запуск программы с отладчиком, так что даже когда я вызываю программу из скрипта, отладчик запускает мою программу и может разбиться на какой-то строке кода.

Так как же сделать это с GDB на Linux? Например, я /home/my/a.out скомпилирован с помощью опции -g от gcc, я хотел бы, чтобы кто-нибудь звонил в a.out, он будет вызываться gdb:

  1. Должен ли я изменить какой-либо системный файл, говоря, что /home/my/a.out должен быть запущен gdb и автоматически присоединен?

  2. Как заставить GDB автоматически присоединить его, а затем сломать на ‘main’ и запустить?

0

Решение

Должен ли я изменить какой-либо системный файл, говоря, что /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’ и запустить?

Выше скрипт сделает это автоматически.

1

Другие решения

Других решений пока нет …