Tôi đã đặt các điểm ngắt nhưng Xcode dường như bỏ qua chúng.
Tôi đã đặt các điểm ngắt nhưng Xcode dường như bỏ qua chúng.
Câu trả lời:
Trước hết, tôi đồng ý 100% với những người trước đó nói rằng TẮT Load Symbols Lazily
.
Tôi có hai điều nữa cần thêm.
(Đề xuất đầu tiên của tôi nghe có vẻ hiển nhiên, nhưng lần đầu tiên ai đó đề xuất nó với tôi, phản ứng của tôi diễn ra như sau: "thôi nào, làm ơn, bạn thực sự nghĩ rằng tôi sẽ không biết tốt hơn ...... ồ.")
Đảm bảo rằng bạn không vô tình đặt "Cấu hình bản dựng đang hoạt động" thành "Bản phát hành".
Trong "Mục tiêu" trong màn hình cây đồ họa của dự án của bạn, nhấp chuột phải vào Mục tiêu của bạn và thực hiện "Nhận thông tin". Tìm thuộc tính có tên "Tạo ký hiệu gỡ lỗi" (hoặc tương tự) và đảm bảo rằng thuộc tính này đã được KIỂM TRA (hay còn gọi là BẬT). Ngoài ra, bạn có thể thử tìm (cũng trong Target >> Get Info) một thuộc tính có tên "Định dạng thông tin gỡ lỗi" và đặt nó thành "Dwarf with dsym file."
Có một số thuộc tính khác trong Mục tiêu >> Nhận thông tin có thể ảnh hưởng đến bạn. Tìm kiếm những thứ như tối ưu hóa hoặc nén mã và TẮT những thứ đó (tôi cho rằng bạn đang làm việc ở chế độ gỡ lỗi, vì vậy đây không phải là lời khuyên tồi). Ngoài ra, hãy tìm những thứ như loại bỏ biểu tượng và đảm bảo rằng nó cũng TẮT. Ví dụ: "Sản phẩm được liên kết dải" phải được đặt thành "Không" cho mục tiêu Gỡ lỗi.
Trong Xcode 7, những gì hiệu quả với tôi là:
1) Đảm bảo rằng mục tiêu -> lược đồ -> Chạy - ở chế độ Gỡ lỗi (đã được Phát hành)
2) Đảm bảo kiểm tra tùy chọn "Gỡ lỗi thực thi" xem bên dưới:
Tôi chỉ gặp vấn đề tương tự (một lần nữa). Sau khi kiểm tra ba lần "Tải biểu tượng một cách lười biếng" và loại bỏ và gỡ lỗi cờ tạo thông tin, tôi đã làm như sau:
Bạn có thể hoàn thành tác vụ tương tự trong công cụ tìm bằng cách nhấp chuột phải / tùy chọn vào gói .xcodeproj và chọn "Hiển thị Nội dung Gói".
Khi tôi khởi động lại Xcode, tất cả các cửa sổ của tôi đã được đặt lại về vị trí mặc định, v.v. nhưng các điểm ngắt vẫn hoạt động!
Lý do khác
Đặt DeploymentPostprocessing
thành KHÔNG trong BuildSettings - chi tiết tại đây
Nói ngắn gọn -
Việc kích hoạt cài đặt này cho biết rằng mã nhị phân sẽ bị loại bỏ và chế độ tệp, chủ sở hữu và thông tin nhóm phải được đặt thành giá trị tiêu chuẩn. [DEPLOYMENT_POSTPROCESSING]
YES
chỉ có trong các subproject
điểm ngắt của tôi và sau đó không hoạt động subprojects
. Và sau khi đặt thành NO
, nó thật hoàn hảo!
Xem bài đăng này: Các điểm ngắt không hoạt động trong Xcode? . Bạn có thể đẩy "Run" thay vì "Debug" trong trường hợp đó chương trình của bạn không chạy với sự trợ giúp của gdb, trong trường hợp đó, bạn không thể mong đợi các điểm ngắt hoạt động!
Một trong những giải pháp khả thi cho điều này có thể là .... đi tới Sản phẩm> Lược đồ> Chỉnh sửa lược đồ> .. Trong Chạy> thông tin> Kiểm tra thực thi "Gỡ lỗi thực thi".
Điều này đã khiến tôi gặp phải Xcode 9 trong nửa ngày khó chịu. Nó kết thúc là một cài đặt gỡ lỗi đơn giản.
Đi tới Gỡ lỗi> Quy trình làm việc gỡ lỗi và đảm bảo rằng 'Luôn hiển thị tháo gỡ' đã được tắt. Đơn giản như vậy. :(
Đến trang này với cùng một vấn đề (mã C trong Xcode 6 không dừng lại ở các điểm ngắt) và không có giải pháp nào ở trên hoạt động (dự án thực tế đã ra khỏi hộp, cài đặt khôn ngoan, vì vậy rất ít cơ hội cho bất kỳ cài đặt trình gỡ lỗi nào được đặt thành giá trị sai) ...
Sau khi lãng phí khá nhiều thời gian để giải quyết vấn đề, cuối cùng tôi đã tìm ra thủ phạm (đối với mã của tôi):
Xcode (/ LLVM) không thích #line
các lệnh tiền xử lý kiểu Bison .
Loại bỏ chúng đã khắc phục sự cố (trình gỡ lỗi đã dừng lại ở các điểm ngắt của tôi).
Tôi gặp rất nhiều vấn đề với các điểm ngắt trong Xcode (2.4.1). Tôi sử dụng một dự án chỉ chứa các dự án khác (như Giải pháp trong Visual Studio). Tôi thấy rằng đôi khi các điểm ngắt không hoạt động trừ khi có ít nhất một điểm ngắt được đặt trong dự án bắt đầu (tức là điểm chứa điểm nhập cho mã của tôi). Nếu các điểm ngắt duy nhất nằm trong các dự án "cấp thấp hơn", chúng sẽ bị bỏ qua.
Có vẻ như Xcode chỉ xử lý các hoạt động của điểm ngắt một cách chính xác nếu bạn hành động trên điểm ngắt khi bạn đang ở trong dự án có chứa dòng nguồn mà điểm ngắt trên.
Nếu tôi thử xóa hoặc vô hiệu hóa các điểm ngắt thông qua một dự án khác, hành động này đôi khi không có hiệu lực, mặc dù trình gỡ lỗi chỉ ra rằng nó có. Vì vậy, tôi sẽ thấy mình bị phá vỡ trên các điểm ngắt bị vô hiệu hóa hoặc trên một điểm ngắt (hiện đang ẩn) mà tôi đã xóa trước đó.
Tôi đã có các điểm ngắt của mình không hoạt động và sau đó thực hiện Xây dựng / Làm sạch Tất cả các Mục tiêu để chúng hoạt động trở lại.
Tôi nghĩ rằng vấn đề có thể là sự không tương thích giữa các phiên bản thiết bị và Xcode. Tôi gặp sự cố này khi cố gắng gỡ lỗi trên iPhone 4S chạy iOS 5.0.1 của mình. Tôi vẫn đang sử dụng Xcode 3.2.5. Tôi nhận được các ký hiệu từ điện thoại bằng cách chọn "sử dụng thiết bị này để phát triển" trong cửa sổ Trình tổ chức. Tuy nhiên, điện thoại này từ chối ngắt điểm. 3GS cũ của tôi sẽ điểm ngắt, cùng một dự án Xcode, cùng một cài đặt ... chỉ khác thiết bị và nó đang chạy iOS 4.0. Tôi đoán đây là lỗi Xcode trong 3.2.5, vì tôi có các ký hiệu. Sau khi đã thử tất cả các giải pháp được đăng ở đây cho đến nay, tôi đã quyết định giải pháp cho vấn đề của mình là tiếp tục và nâng cấp lên XCode 4. Có lẽ bạn không thể gỡ lỗi hiệu quả trừ khi SDK cơ sở của bạn ít nhất cao bằng hệ thống cần gỡ lỗi. Có lẽ đó là điều hiển nhiên - bất cứ ai có thể xác nhận?
Chỉnh sửa: Tôi sẽ cập nhật khi tôi có thể xác nhận điều này là đúng.
Xóa thư mục Xây dựng của tôi đã giải quyết được vấn đề cho tôi.
Trong Xcode 4
- Product menu > Manage Schemes
- Select the scheme thats having debugging problems (if only one choose that)
- Click Edit button at bottom
- Edit Scheme dialog appears
- in left panel click on Run APPNAME.app
- on Right hand panel make sure youre on INFO tab
- look for drop down DEBUGGER:
- someone had set this to None
- set to LLDB if this is your preferred debugger
- can also change BUILD CONFIGURATION drop down to Debug
- but I have other targets set to AdHoc which debug fine once Debugger is set
Tôi đã tìm thấy vấn đề. Bằng cách nào đó, " Hiển thị Disassembly khi gỡ lỗi " đã được bật trong XCode của tôi, điều này tạo ra vấn đề đó. Khi tôi vô hiệu hóa nó, tất cả trình gỡ lỗi của tôi dừng lại trong mã nguồn của tôi.
Bạn có thể tìm thấy nó dưới: Product->Debug Workflow->Show Disassembly
khi gỡ lỗi.
Nếu vẫn thất bại, thay vì ngắt, bạn có thể gọi hàm sau:
void BreakPoint(void) {
int i=1;
#if !__OPTIMIZE__
printf("Code is waiting; hit pause to see.\n");
while(i);
#endif
}
Để tiếp tục, hãy đặt i bằng 0 theo cách thủ công, sau đó nhấn vào nút tiếp tục.
Điều tương tự đã xảy ra với tôi trong XCode 6.3.1. Tôi đã sửa được nó bằng cách:
Sau khi thực hiện thay đổi đó, tôi đặt các tùy chọn Di chuyển điểm ngắt trở lại dự án và bỏ chọn tùy chọn Chia sẻ điểm ngắt và vẫn hoạt động.
Tôi không biết chính xác tại sao nhưng điều này sẽ lấy lại các điểm dừng của tôi.
Tôi đã thử tất cả những điều trên nhưng đối với tôi chỉ hủy kích hoạt các điểm ngắt gỡ lỗi một lần và sau đó kích hoạt chúng hoạt động.
Khi đặt điểm ngắt, hãy nhấp chuột phải và bạn sẽ nhận được một số tùy chọn về cách xử lý điểm ngắt (ghi nhật ký và tiếp tục, tạm dừng thực thi, v.v.)
Đồng thời đảm bảo rằng "Tải biểu tượng một cách lười biếng" không được chọn trong tùy chọn gỡ lỗi.
(Áp dụng cho Xcode 3.1, không chắc chắn về các phiên bản trong quá khứ / tương lai)
Đồng thời đảm bảo rằng bản phân phối AppStore của ứng dụng không được cài đặt trên thiết bị.
Dường như có 3 trạng thái cho các điểm ngắt trong Xcode. Nếu bạn nhấp vào chúng, chúng sẽ chuyển qua các cài đặt khác nhau. Màu xanh lam đậm được bật, màu xám bị tắt và đôi khi tôi thấy màu xanh lam nhạt khiến tôi phải nhấp lại vào điểm ngắt để chuyển nó sang màu xanh lam đậm.
Ngoài điều này, hãy đảm bảo rằng bạn đang khởi chạy nó bằng lệnh gỡ lỗi chứ không phải lệnh chạy. Bạn có thể làm điều đó bằng cách nhấn tùy chọn + lệnh + quay lại hoặc tùy chọn Bắt đầu (gỡ lỗi) từ menu chạy.
Tôi có Xcode 3.2.3 SDK 4.1 Các điểm ngắt ngẫu nhiên sẽ bị lỗi. Tôi đã tìm thấy nếu bạn dọn dẹp bản dựng và sử dụng lệnh cảm ứng trong bản dựng, chúng hoạt động trở lại.
Đây là một điểm khó hiểu mà tôi đã gặp phải: nếu bạn đang làm việc trên một thư viện được chia sẻ (hoặc một plugin), các điểm ngắt của bạn sẽ chuyển sang màu vàng khi khởi động, điều này có thể khiến bạn gõ bàn phím của mình một cách bực bội và giết chết quá trình gỡ lỗi. Đừng làm vậy! Các biểu tượng sẽ không được tải cho đến khi ứng dụng tải thư viện, lúc này các điểm ngắt sẽ trở nên hợp lệ. Tôi đã gặp sự cố này với một plugin trình duyệt ... BP đã bị vô hiệu hóa cho đến khi tôi duyệt đến một trang khởi tạo plugin của mình.