Trong tổ chức XCode, Bảng điều khiển - Tôi có thể đọc đầu ra NSLog
, nhưng không phải printf()
. Điều này có thể đọc kết quả printf()
trên thiết bị thực, giống như trong trình mô phỏng không?Gỡ lỗi iPhone thiết bị thực
Trả lời
giải pháp dễ nhất sẽ được quá tải chức năng printf trên toàn cầu trong dự án của bạn và thay thế nó với sản lượng NSLog
int printf(const char * __restrict format, ...)
{
va_list args;
va_start(args,format);
NSLogv([NSString stringWithUTF8String:format], args) ;
va_end(args);
return 1;
}
Sohaib, cảm ơn rất nhiều. Giải pháp này hoạt động hoàn hảo và tôi có thể để lại tất cả mã C mà không có bất kỳ thay đổi nào :) – theWalker
@skippy: Điều này có nên được đánh dấu là câu trả lời đúng không? – newenglander
chúng ta nên đặt đoạn mã này vào đâu? – Raptor
Skippy, printf() là câu lệnh đầu ra cho c không cho Objective C, SO trong thiết bị thực cũng printf() không hoạt động.
Mục tiêu-C là bộ siêu C nghiêm ngặt, vì vậy printf() rất nhiều công trình như được ghi chép. Nhưng NSLog() đằng sau hậu trường có nhiều hơn printf(), đó có thể là lý do tại sao Skippy gặp rắc rối. –
Tôi tin rằng vấn đề thực sự là printf in để stdout, trong khi NSLog in để stderr. –
Nick, fprintf (stderr, format, args); không hoạt động trong Bảng điều khiển của tổ chức XCode. – theWalker
Bạn có thể chạy lệnh sau để chỉ in ra console của thiết bị:
syslog(LOG_WARNING, "log string");
Bạn cũng sẽ cần phải #include <sys/syslog.h> cho syslog và LOG_WARNING để được khai báo rõ ràng
Bạn có thể sử dụng mã nhật ký chuẩn mà không khai báo rõ ràng Tôi nghĩ rằng – wxs
Có, như tôi đã nói, syslog và LOG_WARNING được khai báo rõ ràng trong sys/syslog.h (tên của bao gồm không hiển thị do sử dụng sai < and >) –
Bật iOS 10 stdout đang được gửi tới Xcode, do đó không cần nhật ký hệ thống nữa. –
Là Nick Lockwood cho biết trong một trong những ý kiến trên, printf in để stdout nhưng NSLog in để stderr. Bạn có thể sử dụng fprintf để in thành stderr (bảng điều khiển Xcode) thay vì sử dụng printf, như sau:
fprintf(stderr, "This prints to the Xcode debug console");
đơn giản và hoạt động với obj-C++;) –
có vẻ như nó không hoạt động trong c + + cho iOS – Sergei
@Sergei hoạt động cho tôi ngay bây giờ, trên XCode 9.2. Lưu ý rằng NSLog thêm một số thông tin bổ sung vào đầu ra làm tiền tố. Tuy nhiên fprintf chỉ ghi lại những gì bạn vượt qua như một tham số. Ngoài ra fprintf không tự in một \ n. –
- 1. Gỡ lỗi thiết bị iPhone
- 2. Android. Gỡ lỗi trên thiết bị thực (Nexus 7)
- 3. Gỡ lỗi thiết bị Android qua Bluetooth
- 4. Gỡ lỗi thiết bị Android qua Internet
- 5. Chấm dứt gỡ lỗi trên thiết bị
- 6. Galaxy Tab trên thiết bị gỡ lỗi?
- 7. Xác thực Id thiết bị iPhone?
- 8. Phát hiện thiết bị gỡ lỗi (ADB) không hoạt động
- 9. Gỡ lỗi thiết bị iPad với thông tin nhỏ
- 10. "Đang chờ thiết bị" khi gỡ lỗi trên điện thoại
- 11. Cách gỡ lỗi trên thiết bị thực (sử dụng Eclipse/ADT)
- 12. Gỡ lỗi lỗi tối nghĩa trên iPhone
- 13. Gỡ lỗi SIGKILL trên glDrawArrays(). iPhone iOS
- 14. Ứng dụng bị treo khi gỡ lỗi trên thiết bị iOS 3.1.3 với Xcode 4.3.2
- 15. Chọn thiết bị Âm thanh trên iPhone
- 16. Xcode 4.3 và gỡ lỗi trên thiết bị iOS 3.x
- 17. lập trình nhận dạng thiết bị iphone
- 18. Gỡ lỗi GNU thực hiện
- 19. iPhone - gỡ lỗi "con trỏ được trả tự do đã không được phân bổ" lỗi
- 20. Gỡ lỗi tệp thực thi C# bị lỗi khi khởi chạy
- 21. Mô phỏng thiết bị chặn bị lỗi có lỗi đọc?
- 22. Gỡ lỗi mã gốc trong Android trên thiết bị * * (không giả lập)
- 23. Không thể nhận tin nhắn từ thiết bị (iPhone)
- 24. Cách tốt để gỡ lỗi lỗi thiết kế Visual Studio
- 25. Phương thức Gian lận trên thiết bị iPhone
- 26. BlackBerry trên thiết bị gỡ lỗi không hiển thị chuỗi giá trị
- 27. Sử dụng Gỡ lỗi từ xa Chromium từ thiết bị bên ngoài
- 28. Bật tắt hoạt ảnh chậm trong khi gỡ lỗi bằng thiết bị iOS
- 29. Có thể phát hiện USB-gỡ lỗi trên thiết bị Android không?
- 30. không gửi được gói qLaunchSuccess, không thể gỡ lỗi trong thiết bị
Nó có thể giúp bạn giải thích tại sao bạn muốn làm điều này? Tại sao bạn cần sử dụng printf thay vì NSLog()? Có phải vì bạn đang sử dụng thư viện có chứa các câu lệnh printf() không? –
Bởi vì phần lớn nhất của mã của tôi là mã C. Một phổ biến, chạy dưới windoz, droid, symbian, iOS vv Và printf() làm việc dưới trình mô phỏng iOS, trong XCode. – theWalker