Как я могу присоединиться к процессу с аргументами командной строки? - PullRequest
1 голос
/ 04 февраля 2011

Я запустил процесс Centos, который продолжается уже несколько часов. Я использовал gcc -g для создания общей библиотеки и исполняемого файла. Я запустил процесс GDB, введя gdb ./MatchUpAccurate. После запуска GDB я ввожу run -input XXXXXXX -fileloc YYYYY -version 5.

Когда я ввожу ps -ef, я вижу два идентификатора процесса, один для gdb ./MatchUpAccurate.exe, а другой для ./MatchUpAccurate.exe -input XXXXXXX -fileloc YYYYY -version 5.

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

Я прочитал некоторую документацию о том, как использовать gdb для присоединения уже запущенного процесса. Однако все примеры не имеют аргументов командной строки. Мне было интересно, как использовать GDB для присоединения процесса с аргументами командной строки. Я хотел бы иметь возможность устанавливать точки останова, проверять переменные, просматривать стек вызовов и шагать по пути выполнения, не убивая исходный процесс. Спасибо.

Ответы [ 2 ]

4 голосов
/ 04 февраля 2011

вам нужно присоединить к pid:

gdb binary_name pid

или запустить GDB и присоединить

user@host ~> gdb binary_name
(gdb) attach 1234
2 голосов
/ 04 февраля 2011

Если вы запускаете свой exe с gdb, вам не нужно к нему присоединяться. Просто нажмите Ctrl-C и посмотрите на вашу переменную.

Если вы хотите присоединить, запустите ваш exe:

./myexe --myopt myargs

получить pid:

myexe_pid=$!

Затем приложите:

gdb ./myexe $myexe_pid

my2c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...