2010-01-06 26 views
6

Tôi đang cố gắng để có được backtrace ngăn xếp của một tiến trình đang chạy (PID và đường dẫn nhị phân được biết) từ một chương trình khác. Chương trình được đề cập được viết bằng C++ và được biên dịch bằng g ++ với các ký hiệu gỡ lỗi gdb.Nhận backtrace ngăn xếp của một quy trình đang chạy

Tôi đang tìm kiếm một C hoặc C++ thư viện mà các công trình trên Linux, HP-UX và Solaris sản xuất một sản lượng tương tự như đầu ra gọi popen() với một cái gì đó như thế này:

gdb -batch -x /dev/stdin <BINARY> <PID> << EOF 
thread apply all bt 
EOF 

tôi đã tìm thấy lsstack (http://sourceforge.net/projects/lsstack/), chỉ có Linux và biết chương trình pstack cho Solaris.

Có ai biết cách đáng tin cậy để thực hiện giao diện Unix/POSIX này không?

+0

Ngoài ra còn có tiện ích 'gstack' trên Linux, hoạt động bằng cách gọi gdb tương tự như trên. – mark4o

Trả lời

2

Bạn cần libunwind

+0

Cảm ơn! libunwind-ptrace trông rất hứa hẹn. – jsc

Các vấn đề liên quan