2012-10-02 14 views
7

Tôi muốn biết cách gỡ lỗi tốt nhất trong xcode. Tôi biết cách đặt điểm ngắt nhưng lý tưởng là tôi muốn trình mô phỏng dừng lại và sau đó bước qua mã ...Gỡ lỗi trong XCode - chạy qua mã và các điểm ngắt

Không bước qua điểm ngắt nhưng bước qua dòng mã để tôi có thể thấy nó ở đâu, phương pháp nào đang chạy, v.v ...

Điều này có thể thực hiện được không?

Trả lời

23

Debug control icons in Xcode

Ở phía dưới bên trái của cửa sổ mã của bạn trong Xcode 4 bạn sẽ nhìn thấy điều khiển debug bước. Mỗi văn bản có một văn bản ngắn để giải thích. Tôi sẽ giải thích chi tiết hơn một chút ở đây. Học để trở thành một trình gỡ lỗi chuyên gia là chủ đề của nhiều sách giáo khoa.

Nút phát alt văn bản: Tiếp tục thực hiện chương trình. Bạn đã có thể tìm thấy điều này rồi. Nhấn nó tiến tới điểm ngắt tiếp theo.

Mũi tên nhảy alt văn bản: Bước qua. Nhấn nút này nhiều lần sẽ cho phép bạn tiến qua chương trình của bạn ở cấp độ phạm vi hiện tại giống như chương trình của bạn. Nó sẽ cho phép bạn quan sát hành vi của chương trình của bạn từng bước thông qua phương pháp hiện tại. Khi phương thức hiện tại kết thúc, Step over sẽ đưa bạn đến phương thức gọi một bước trong ngăn xếp chương trình.

Mũi tên xuống alt văn bản: Bước vào. Nhấn nút này sẽ làm theo phương thức mới vào phạm vi của nó và cho phép bạn xem mã trong phương thức được gọi nếu nó đã được biên dịch để gỡ lỗi. Ví dụ: nhấp vào dòng này trên dòng mã hiện tại trong cửa sổ gỡ lỗi ở trên sẽ đưa bạn đến phương thức _generateSources, sau đó bạn có thể tiến hành qua với Step over.

Mũi tên lên alt văn bản: Bước ra. Đưa bạn ra khỏi bối cảnh hiện tại và vào phương thức gọi một bước trong ngăn xếp chương trình. Điều này hoạt động giống hệt nhau để hoàn thành một phương thức bằng cách sử dụng Step over, thực hiện chương trình như bình thường và thực hiện tất cả các dòng mã trong phạm vi ban đầu mà bạn đã không gỡ lỗi bằng cách sử dụng Step over.

View of call stack

Nhấp vào hình bóng với nền màu xanh để xem chồng cuộc gọi hiện tại. Ngăn xếp cuộc gọi sẽ luôn luôn tiến triển tất cả các cách từ phạm vi hiện tại của bạn đến phương thức đầu tiên được gọi để khởi chạy chương trình của bạn. Mỗi phương thức bạn thấy ở đây được gọi theo thứ tự để tiếp cận - [HelloWorldLayer init]. Khi bạn bấm Bước ra thì dòng hiện tại của mã thực thi sẽ trở về - [Nút CCNode] và nếu bạn có nguồn cho nó, bạn có thể duyệt nó.

Ở bên trái là các biến cục bộ hiện tại được hiển thị từ phạm vi dòng mã hiện đang được thực thi (dòng 76 trong hình ảnh này). Các biến này là cách bạn có thể thực sự sử dụng các lệnh trên như Bước qua. nềnwinSize là các biến cục bộ được xác định trong phạm vi này và hiện đang được sử dụng. Khi phạm vi được thoát, chúng sẽ biến mất. _cmd là một con trỏ tới bộ chọn hiện đang được gọi trong Objective-C: - [HelloWorldLayer init]. Bạn sẽ không cần điều này cho đến khi bạn là một trình gỡ lỗi nâng cao.self là con trỏ trỏ đến đối tượng chứa tất cả các thanh ngang thuộc về lớp hiện đang thi hành, HelloWorldLayer và objc_super là một con trỏ đến lớp cha của HelloWorldLayer.

+0

đây là lý do tại sao tôi luv xcode – Goldname

8

Tôi sẽ thêm phím tắt vào câu trả lời của @Thomson Corner.

  • Sử dụng 'c' để tiếp tục. 's' để bước, 'n' cho tiếp theo, 'f' cho kết thúc. Tôi không thích điều hành trình gỡ lỗi bằng chuột. Những biểu tượng quá nhỏ và nhận được con trỏ trên chúng là một nỗi đau (một lần trong một thời gian). Tôi đã luôn luôn là một anh chàng bàn phím và nó thực sự thoải mái với bàn phím.

  • Bạn cũng nên thử sử dụng po - nó in ra các giá trị biến với các đề xuất sắp xếp trước. Giống như po _varName. Giúp dễ dàng kiểm tra xem biến có phải là giá trị không, v.v.,

  • Bạn cũng có thể thay đổi bí danh lệnh bằng cách sửa đổi ~/.lldbinit.

Đây là hướng dẫn chính thức: http://lldb.llvm.org/tutorial.html. Và một hướng dẫn khác: http://www.informit.com/articles/article.aspx?p=1829415&seqNum=6. Những gì tôi đã chỉ ra ở trên là các trình gỡ lỗi chức năng cơ bản nhất hầu hết thực hiện. Có nhiều tùy chọn hơn như các điểm ngắt ngoại lệ và các chương trình tải, nhưng tôi chắc chắn rằng chúng là một ngày khác nếu bạn mới bắt đầu.

+0

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_help-command_shortcuts/MenuCommands/MenuCommands014.html cung cấp hướng dẫn khá toàn diện cho các phím tắt được hỗ trợ XCode hiện tại. –