2008-11-26 15 views
21

Vì vậy, tôi đã viết mã lỗi đôi khi gặp sự cố ... và tạo tệp stackdump.Sử dụng stackdump từ Cygwin thực thi

Sử dụng addr2line Tôi có thể tìm hiểu cách chương trình đến điểm cố định bằng cách giải mã địa chỉ theo từng bước một. Có một công cụ thay thế có thể dễ dàng gỡ lỗi bằng cách sử dụng bãi chứa stack? Có cách nào để tải thông tin này trong Insight/Gdb không?

Trả lời

40

Bạn có thể hướng dẫn Cygwin khởi động trình gỡ lỗi gdb của bạn ngay khi xảy ra lỗi. Để đạt được điều này, thêm error_start=action vào biến môi trường Cygwin:
export CYGWIN="$CYGWIN error_start=gdb -nw %1 %2"

khác bạn có thể có Cygwin tạo ra một bãi chứa lõi thực sự.
export CYGWIN="$CYGWIN error_start=dumper -d %1 %2"

+1

1 cho gợi ý rất hữu ích –

+3

Và chạy 'con đường gdb/to/thư mục/nhị phân path/to/thư mục/core' để gỡ lỗi nó. Nhờ http://stackoverflow.com/a/5115653/204658. – thoni56

+0

Với tùy chọn này 'error_start = gdb -nw% 1% 2' được kích hoạt, tôi có gdb đang chạy, tuy nhiên việc bỏ gdb chỉ dẫn đến nó bắt đầu lại, làm cách nào tôi thoát nó hoàn toàn? – CMCDragonkai

-1

Trước hết, hãy chắc chắn bạn xây dựng với gỡ lỗi nguồn kích hoạt (bằng cách sử dụng tùy chọn -g):

gcc -g -o myfile myfile.c 

Sau đó Load bãi vào gdb sau khi vụ tai nạn (hoặc cái nhìn sâu sắc, hoặc ddd)

gdb myfile core 
+17

stackdump! = Coredump – Gerhard