2010-01-28 3 views
31

В общем я вижу процесс pid-х, который работает в фоновом режиме и начать DBX на этот процесс с помощью команды dbx -a <pid>запустить GDB с помощью ФИД

аналогично тому, как я мог сделать это с помощью GDB?

ответ

33

Есть два способа.

из командной строки, включают в себя идентификатор процесса в качестве аргумента после имени исполняемого файла:

gdb /path/to/prog PID 

С в БГД, вы можете использовать присоединять команду:

gdb /path/to/prog 
gdb> attach PID 

Хотя задающий на командной строки более кратким, есть небольшой риск, что если у вас есть файл ядра, который имеет имя, такое же, как pid (т. е. для pid 2345, основной файл должен быть назван «2345»), тогда gdb будет откройте основной файл. По общему признанию, вероятность этого события незначительна.

3

От GdB человека страницы:

Вы можете, вместо этого, указать идентификатор процесса в качестве второго аргумента, если вы хотите отладить выполняющийся процесс:

gdb program 1234 
42

В дополнение к предыдущим вы можете напрямую использовать

gdb -p <pid> 
+0

Это правильный ответ. Прикрепление GDB к PID никоим образом не должно включать указание пути к исполняемому файлу. Правильное решение должно включать только PID и ничего больше. – AnT

Смежные вопросы