2010-02-01 4 views
9

Tôi có một số câu hỏi liên quan đến các bãi lõi. Tôi có gdb trên Windows, sử dụng Cygwin.Phân tích kết xuất lõi bằng gdb

  1. Vị trí tệp kết xuất lõi là gì? Có phải tệp a.exe.stackdump không? (Đây là tệp duy nhất được tạo sau sự cố) Tôi đọc trên các diễn đàn khác rằng tệp kết xuất lõi được đặt tên là "lõi". Nhưng tôi không thấy bất kỳ tập tin với tên "cốt lõi".

  2. Lệnh để mở và hiểu tệp kết xuất lõi là gì?

Trả lời

12
  1. Bạn cần phải cấu hình Cygwin để sản xuất cốt lõi bãi bằng cách bao gồm

    error_start=x:\path\to\dumper.exe

    trong biến môi trường CYGWIN của bạn (xem here trong phần "dumper" để biết thêm thông tin). Nếu bạn không làm điều này, bạn sẽ chỉ nhận được một stacktrace - mà cũng có thể giúp bạn trong việc chẩn đoán vấn đề, mặc dù.

  2. Bắt đầu gdb như sau để gắn nó vào một tập tin dump lõi:

    gdb myexecutable --core=mycorefile

    Bây giờ bạn có thể sử dụng các lệnh gdb bình thường để in một stacktrace, kiểm tra các giá trị của các biến, và vân vân.

+0

Làm thế nào để sửa đổi biến môi trường Cygwin? – avd

+0

xem http://en.wikipedia.org/wiki/Environment_variable. Nếu bạn đang sử dụng Cygwin, tôi sẽ khuyên bạn nên đọc lên một số điều cơ bản về Unix - bạn sẽ cần đến chúng. –

+0

Thực ra tôi biết khái niệm biến môi trường. Tôi hiểu những gì bạn nói, thiết lập biến môi trường có tên là "error_start". Tôi hỏi tôi nên xác định biến môi trường mới ở đâu? tại cùng một vị trí (máy tính của tôi-> thuộc tính -> ...)? – avd

2
  1. Vâng, Cygwin tạo a.exe.stackdump file theo mặc định. Bạn cần phải cấu hình nó để tạo ra core s là tốt (câu trả lời của Martin bao gồm điều đó).
  2. Một hướng dẫn đơn giản trên lõi bãi gỡ lỗi có thể được tìm thấy here