2010-01-28 31 views
31

Nói chung tôi thấy của quá trình pid mà đang chạy ở chế độ nền và bắt đầu dbx vào quá trình đó bằng cách sử dụng lệnh dbx -a <pid>bắt đầu gdb sử dụng một pid

tương tự làm thế nào tôi có thể làm điều đó bằng gdb?

Trả lời

33

Có hai cách.

Từ dòng lệnh, bao gồm các pid như một cuộc tranh cãi sau tên thực thi:

gdb /path/to/prog PID 

Từ bên trong gdb, bạn có thể dùng đính kèm lệnh:

gdb /path/to/prog 
gdb> attach PID 

Trong khi nêu rõ trên dòng lệnh ngắn gọn hơn, có một rủi ro nhỏ nếu bạn có một tệp lõi có tên giống với pid (tức là đối với pid 2345, tệp lõi sẽ phải được đặt tên là "2345") thì gdb sẽ mở tệp lõi. Phải thừa nhận rằng, cơ hội xảy ra điều này là rất nhỏ.

3

Từ trang người đàn ông gdb:

Bạn có thể, thay vào đó, chỉ định một quá trình ID như một cuộc tranh luận thứ hai, nếu bạn muốn gỡ lỗi một quá trình chạy:

gdb program 1234 
42

Ngoài việc trước đây bạn có thể trực tiếp sử dụng

gdb -p <pid> 
+0

Đây là câu trả lời đúng. Việc đính kèm GDB vào một PID không nên theo bất kỳ cách nào liên quan đến việc xác định đường dẫn đến tệp thực thi. Giải pháp đúng chỉ liên quan đến PID và không có gì khác. – AnT

Các vấn đề liên quan