Bạn có thể sử dụng lõi với gdb theo nhiều cách, nhưng chuyển các tham số được chuyển đến thực thi cho gdb không phải là cách để sử dụng tệp lõi. Đây cũng có thể là lý do bạn gặp lỗi đó. Bạn có thể sử dụng các tập tin cốt lõi trong cách sau:
gdb <executable> <core-file>
hoặc gdb <executable> -c <core-file>
hoặc
gdb <executable>
...
(gdb) core <core-file>
Khi sử dụng tập tin lõi bạn không cần phải vượt qua đối số. Kịch bản tai nạn được hiển thị trong gdb (được kiểm tra bằng gdb Phiên bản 7.1 trên Ubuntu). Ví dụ:
$ ./crash -p param1 -o param2
Segmentation fault (core dumped)
$ gdb ./crash core
GNU gdb (GDB) 7.1-ubuntu
...
Core was generated by `./crash -p param1 -o param2'. <<<<< See this line shows crash scenario
Program terminated with signal 11, Segmentation fault.
#0 __strlen_ia32() at ../sysdeps/i386/i686/multiarch/../../i586/strlen.S:99
99 ../sysdeps/i386/i686/multiarch/../../i586/strlen.S: No such file or directory.
in ../sysdeps/i386/i686/multiarch/../../i586/strlen.S
(gdb)
Nếu bạn muốn truyền tham số để thực thi để được sửa lỗi trong gdb sử dụng --args
.
Ví dụ:
$ gdb --args ./crash -p param1 -o param2
GNU gdb (GDB) 7.1-ubuntu
...
(gdb) r
Starting program: /home/@@@@/crash -p param1 -o param2
Program received signal SIGSEGV, Segmentation fault.
__strlen_ia32() at ../sysdeps/i386/i686/multiarch/../../i586/strlen.S:99
99 ../sysdeps/i386/i686/multiarch/../../i586/strlen.S: No such file or directory.
in ../sysdeps/i386/i686/multiarch/../../i586/strlen.S
(gdb)
trang Man sẽ rất hữu ích để xem các tùy chọn gdb khác.
Nguồn
2011-11-29 06:30:33
Bạn có chắc chắn 'exe' không phải là tập lệnh hệ vỏ (để đặt một số biến, v.v.) như ví dụ: 'firefox' có trên Linux không? –
http://unix.stackexchange.com/questions/89933/how-to-view-core-files-for-debugging-purposes-in-linux/202443#202443 –