Làm cách nào để đính kèm trình gỡ lỗi vào ứng dụng iOS sau khi khởi chạy?


100

Tôi gặp sự cố mà tôi đang khắc phục sự cố xảy ra rất ít khi xảy ra và dường như không xảy ra khi tôi có mọi thứ đang chạy dưới Xcode.

Có thể chạy một ứng dụng bình thường (tức là từ Springboard) cho đến khi sự cố của tôi xảy ra và sau đó đính kèm trình gỡ lỗi tại thời điểm đó không?

Tôi muốn làm điều này mà không cần bẻ khóa nếu có thể.

Câu trả lời:


123
  • Đính kèm thiết bị của bạn đã kết nối máy Mac của bạn
  • Gỡ lỗi> Đính kèm vào quá trình theo PID hoặc tên
  • Trong bảng thoại, hãy nhập tên ứng dụng của bạn khi nó xuất hiện trong trình điều hướng Gỡ lỗi khi khởi động qua Xcode.

Nếu ứng dụng đã chạy, trình gỡ lỗi sẽ đính kèm vào quá trình đang chạy. Nếu nó không chạy, nó sẽ đợi ứng dụng khởi chạy rồi đính kèm.


Ole, cảm ơn vì câu trả lời. Tôi đã tìm kiếm một cách để làm điều này. Khi tôi đính kèm trình gỡ lỗi, có vẻ như nó đính kèm nhưng sau đó tôi nhận được thông báo sau: cảnh báo: Không thể đọc ký hiệu cho / var / mobile / Applications / {GUID} / {APPNAME} .app / {APPNAME} (tệp không tìm). Khi tôi nhấn nút "dừng" trong XCode, ứng dụng sẽ kết thúc. Có vẻ như nó không tìm thấy các ký hiệu gỡ lỗi, mặc dù nó đang được xây dựng ở chế độ gỡ lỗi. Bất kỳ ý tưởng?
Brian

4
Tôi gặp sự cố với hộp thoại Nếu nó không chạy, nó sẽ đợi ứng dụng khởi chạy rồi đính kèm. phần. Nó không hoạt động. Tôi sử dụng tên quy trình để đợi ứng dụng gọi. Tôi khởi chạy ứng dụng trên iPhone, nhưng trình gỡ lỗi không bao giờ nhận ra ứng dụng đã khởi động.
Jonny

1
@BrianV - bạn cần đảm bảo rằng bạn đang biên dịch với -ggdb nếu bạn muốn có thể đính kèm vào quy trình.
itfische

4
Tôi đồng ý với Jonny; kinh nghiệm của tôi là tệp đính kèm hoạt động trên trình mô phỏng, nhưng sẽ không gắn vào thiết bị thực.
James Moore

4
LƯU Ý: Trong Xcode 5.0.1+, nó là Debug > Attach to Process > By Process Identifier (PID) or Name stackoverflow.com/a/20193088/175830
Jason Axelson

116

Tôi sẽ để điều này ở đây vì không có câu trả lời nào trong số 2 câu trả lời khác cung cấp cho tôi khá đủ chi tiết mà không có một chút khó khăn.

  1. Chạy ứng dụng của bạn trong trình mô phỏng và ghi lại tên trong trình điều hướng Gỡ lỗi nhập mô tả hình ảnh ở đây

  2. Cắm thiết bị của bạn và đừng quên chọn thiết bị của bạn làm mục tiêu nhập mô tả hình ảnh ở đây

  3. Gỡ lỗi> Đính kèm vào quy trình> Theo mã định danh quy trình (PID) hoặc tên nhập mô tả hình ảnh ở đây
  4. Nhập tên từ bước 1 và đính kèm. Đó là tất cả những gì bạn phải làm. nhập mô tả hình ảnh ở đây

8
Bạn sẽ có 1000 lượt ủng hộ. Gỡ lỗi những thứ bắt đầu thông qua một lược đồ url cutom có ​​thể là một điều khó khăn nếu không có thủ thuật gọn gàng này. Cảm ơn nhiều!
txulu

2
Tôi ước mình nhìn thấy câu trả lời này trước khi dành 20 phút để tự mình tìm ra câu trả lời này :(
simon_smiley

7
Điều này hoạt động ở chỗ nó gắn vào quy trình, nhưng tôi không thể nhận được bất kỳ đầu ra nhật ký nào là thứ tôi thực sự cần. Bất kỳ ý tưởng?
Orlando

2
@Orlando - Nếu bạn đang tìm kiếm dữ liệu ghi nhận, tôi khuyên bạn nên DeviceConsole: github.com/rpetrich/deviceconsole
orion elenzil

1
Tôi đã làm đúng như bạn đề nghị. và tôi gặp lỗi: Could not attach to PIDTôi đã thử cả tên và ID của nó. Tôi đã thử trong khi ứng dụng đang chạy và trong khi nó bị dừng ..
Honey

49

Trong Xcode 5.0.1 và 6, đó là các mục trên thanh menu:

Debug > Attach to Process > By Process Identifier (PID) or Name...

7

Trong Xcode 7, nó chỉ là:

Debug > Attach to Process by PID or Name...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.