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?
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?
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ỏ.
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
Ngoài việc trước đây bạn có thể trực tiếp sử dụng
gdb -p <pid>
Đâ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