Tôi có câu hỏi về gỡ lỗi chương trình C++ đang chạy trong Linux. Nếu một chương trình đã chạy và không thể bị gián đoạn, làm thế nào để làm điều đó.Làm cách nào để gỡ lỗi chương trình C++ đang chạy trong Linux?
Tôi có thể tìm thấy ba cách, nhưng tôi không biết nhiều về chi tiết, tôi biết ơn nếu có ai có thể xây dựng nó sâu hơn.
1), chúng tôi có thể sử dụng GDB bằng cách xác định quá trình ID
gdb -p PID
Trong trường hợp này, sự khác biệt giữa điều này và attach PID
là gì?
2) Chúng ta có thể sử dụng pstat, tuy nhiên, tôi đang sử dụng Ubuntu, không pstat, nhưng chỉ mpstat
dường như mpstat không cung cấp quá nhiều thông tin, và không quá nhiều lựa chọn.
3) kiểm tra thông tin chi tiết trong thư mục ./proc
Trong trường hợp này, chỉ cần chuyển đến thư mục có PID. Tuy nhiên, điều này có nên được thực hiện một cách mannually không?
Tôi không nghĩ mình đã từng thấy tùy chọn '-p'. Gắn bó với một quá trình bằng PID là rất phổ biến mặc dù. Chính xác thì vấn đề gì với việc đó? – Cascabel
Tôi không chắc câu hỏi của bạn thực sự là gì. Bạn dường như đã có phương pháp làm việc để gỡ lỗi một chương trình C++, do đó tiêu đề của bạn tự trả lời, và sau đó bài đăng của bạn yêu cầu một cái gì đó không liên quan. Bạn có thể diễn đạt lại tiêu đề hoặc câu hỏi của bạn để rõ ràng hơn không? – ephemient
Tôi đã sử dụng 'strace -p PID' để theo dõi các cuộc gọi hệ thống của một ứng dụng C++ đang chạy. Tôi thấy rằng một cuộc gọi đến 'open()' đã bị lỗi và trường hợp lỗi không được xử lý một cách thích hợp. – jschmier