Có thể có một cách tốt hơn, nhưng loại tự động hóa nó.
Đặt những thứ sau vào ~/backtrace
:
backtrace
quit
Đặt điều này trong một tập lệnh được gọi seg_wrapper.sh
trong một thư mục trong đường dẫn của bạn:
#!/bin/bash
ulimit -c unlimited
"$@"
if [[ $? -eq 139 ]]; then
gdb -q $1 core -x ~/backtrace
fi
Các ulimit
lệnh làm cho nó nên cốt lõi được đổ. "$@"
là các đối số được đưa ra cho tập lệnh, vì vậy nó sẽ là chương trình của bạn và các đối số của nó. $?
giữ trạng thái thoát, 139 dường như là trạng thái thoát mặc định cho máy của tôi cho một segfault.
For gdb
, -q
có nghĩa là yên tĩnh (không có thông báo giới thiệu) và -x
yêu gdb
cầu thực thi các lệnh trong tệp được cung cấp cho nó.
Sử dụng
Vì vậy, để sử dụng nó, bạn sẽ chỉ:
seg_wrapper.sh ./mycommand and its arguments
Cập nhật
Bạn cũng có thể viết một trình xử lý tín hiệu thực hiện điều này, xem liên kết này .