Làm thế nào để tôi tìm thấy các biểu tượng gỡ lỗi tách rời để dịch ngược?


1

Tôi đang cố gắng gỡ lỗi một segfault mà không mã nhị phân trong một đường dẫn không chuẩn (cụ thể là trong / frs / alg / alg / bin /) và tôi nhận thấy rằng mã được dịch ngược có ít ký hiệu hơn khi gỡ lỗi trong gdb. Tôi giả sử rằng các biểu tượng gỡ lỗi bị tách ra, nhưng tôi nên tìm ở đâu để tìm thấy chúng?


Cho rằng đó là một con đường không chuẩn, bạn thực sự nên hỏi bất cứ ai cung cấp và / hoặc cài đặt phần mềm ...
Stephen Kitt

@StephenKitt, tôi nghĩ rằng tôi sẽ có nhiều may mắn như tôi đã yêu cầu nguồn hàng ngàn đô la và không (với tiếng cười miễn phí). Mặt khác, gdb không tìm thấy chúng.
hildred

Bạn không thể thực sự "dịch ngược" một chương trình. gdb chỉ có thể tháo rời nó, sau đó bạn sẽ cố gắng đọc ngôn ngữ lắp ráp. Bạn thực sự sẽ không thể gỡ lỗi chương trình mà không cần mã nguồn.
psusi

@psusi. Tôi nhận ra gdb không thể dịch ngược mã, đó là lý do tại sao tôi đang sử dụng một trình dịch ngược riêng biệt.
hildred

@hildred, điều đó chẳng có ý nghĩa gì cả. Nếu không thể thực hiện được thì việc sử dụng một chương trình khác để thực hiện sẽ không có ích. Trong những năm qua, đã có những chương trình tuyên bố "dịch ngược" nhưng chúng không bao giờ hoạt động tốt cả. Nếu bạn muốn gỡ lỗi một chương trình, bạn cần mã nguồn của nó.
psusi

Câu trả lời:


2

Có lẽ nhị phân đã tách rời thông tin gỡ lỗi ; nếu gdbcó thể tìm thấy cái này mà không có bất kỳ cấu hình cụ thể nào, thì nó phải ở một trong

  • một tập tin dựa trên xây dựng dưới /usr/lib/debug/.build-id;
  • một .debugtập tin cùng với nhị phân;
  • một .debugtập tin trong /frs/alg/alg/bin/.debug;
  • một .debugtập tin trong /usr/lib/debug/frs/alg/alg/bin.

Nhị phân có thể có một liên kết gỡ lỗi chỉ vào thông tin tách rời; tìm kiếm một .gnu_debuglinkphần trong nhị phân. Để tìm id xây dựng của nó (nếu có), hãy tìm một phần có tên .note.gnu.build-idhoặc một cái gì đó dọc theo các dòng đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.