2013-06-07 36 views
5

Phần mềm của tôi sử dụng tín hiệu SIGUSR2 và tôi đang sử dụng LLDB (trong Xcode 4.6.2) làm trình gỡ lỗi của tôi. Tôi muốn vô hiệu hóa LLDB khỏi việc dừng tại SIGUSR2 và đã làm như vậy bằng cách sử dụng lệnh:Tắt tín hiệu khi khởi tạo LLDB

process handle --pass true --stop false --notify true SIGUSR2 

Tôi đang tìm cách để LLDB luôn thực thi lệnh này khi khởi động. Tôi đã xem xét thêm một cái gì đó dọc theo dòng settings append target.process.extra-startup-command process trong .lldbinit của tôi, nhưng trong khi điều này thay đổi giá trị của các thiết lập lệnh target.process.extra-startup-lệnh (được chứng minh bằng lệnh settings show), tôi không chắc chắn nếu/làm thế nào tôi có thể sử dụng cài đặt này để luôn thực hiện lệnh process handle để tắt tín hiệu SIGUSR2.

Tôi biết "giải pháp" được đăng tại đây: Permanently configuring LLDB (in Xcode 4.3.2) not to stop on signals. Tôi đang tìm kiếm tuy nhiên cho một giải pháp thanh lịch hơn, nếu có tồn tại.

Trả lời

4

Hiện tại, đề xuất thực hiện việc này trong lệnh breakpoint trên main là giải pháp thanh lịch nhất hiện có.

gdb có quan điểm này về thế giới nơi mà tất cả các quy trình, bất kể hệ thống của chúng có thể là gì, phản hồi kỳ diệu với các tín hiệu UNIX. Vì vậy, nó có ý nghĩa để nói những gì sẽ xảy ra khi quá trình có một SIGINT, nói, trước khi bạn thậm chí đã có một quá trình. Trong lldb, quá trình, khi nó được tạo ra, sẽ cho chúng ta biết tín hiệu của nó là gì và hành vi mặc định của chúng. Đó là đáng yêu, ngoại trừ nó có nghĩa là bây giờ không có nơi tự nhiên để lưu trữ các tùy chọn cấu hình cho hành vi tín hiệu trước khi bạn có một quá trình. Đây chỉ là cái gì đó đã được thêm vào.

Khả năng kích hoạt "các sự kiện vòng đời quá trình", không chỉ "khởi chạy quá trình" mà còn "quá trình thoát" và "tải thư viện được chia sẻ", v.v. Tính năng này là một cái gì đó nó sẽ là tuyệt vời để nộp một yêu cầu nâng cao (http://bugreport.apple.com/) cho, kể từ khi lỗi như hành động như phiếu bầu cho các tính năng.

BTW, target.process.extra-startup-command thực hiện điều gì đó hoàn toàn khác. Nó cho phép bạn thêm một số lệnh vào trình tự lldb gửi tới tác nhân gỡ lỗi của nó (ví dụ: debugserver) trước khi chúng ta bắt đầu chạy. Việc sử dụng chính của nó là bật thêm đăng nhập debugserver.

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