Làm cách nào tôi có thể lấy nhật ký giao diện điều khiển từ Trình mô phỏng iOS?


241

Tôi muốn xem những gì xảy ra trong Trình mô phỏng iOS nếu tôi không thử nghiệm ứng dụng trong Xcode.

Ví dụ: nếu tôi mở một liên kết trong trình giả lập Safari, hãy xem điều gì xảy ra trong bảng điều khiển hoặc nếu tôi cài đặt ứng dụng web, hãy xem các liên kết mà tôi đang nhấn trong bảng điều khiển.

Tôi có thể làm cái này như thế nào?

Tôi muốn xem nó trong Xcode hoặc Terminal, nhưng không vấn đề gì nếu tôi cần sử dụng một phần mềm khác.


Câu trả lời:


270

Trình mô phỏng iOS> Thanh menu> Gỡ lỗi> Nhật ký hệ thống mở


Cách cũ:

Trình mô phỏng iOS in nhật ký trực tiếp lên thiết bị xuất chuẩn, do đó bạn có thể thấy nhật ký được trộn lẫn với nhật ký hệ thống.

Mở Terminal và gõ: tail -f /var/log/system.log

Sau đó chạy trình giả lập.

BIÊN TẬP:

Điều này đã ngừng hoạt động trên Mavericks / Xcode 5. Bây giờ bạn có thể truy cập nhật ký giả lập trong thư mục riêng của mình: ~/Library/Logs/iOS Simulator/<sim-version>/system.log

Bạn có thể sử dụng Console.app để thấy điều này hoặc chỉ cần làm một cái đuôi (ví dụ iOS 7.0.3 64 bit):

tail -f ~/Library/Logs/iOS\ Simulator/7.0.3-64/system.log

EDIT 2:

Bây giờ họ đang ở ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log

tail -f ~/Library/Logs/CoreSimulator/<simulator-hash>/system.log


7
Điều này vẫn còn chính xác? Tôi không thấy bất cứ điều gì từ console.logtrong nhật ký này bằng cách sử dụng tailhoặcConsole.app
Jeff

3
Tôi không nhận được bất kỳ kết quả nào trên OSX 10.10. những bản ghi đó ở đó nhưng trình giả lập của tôi là phiên bản 8.1 và tất cả các bản ghi là phiên bản 7.1 *
skift

65
Trình mô phỏng iOS> Thanh menu> Gỡ lỗi> Nhật ký hệ thống mở
pkamb

4
Cảm ơn! Mặc dù vậy ~ / Library / Logs / CoreSimulator / <Simulator-hash> /system.log những ngày này.
calimarkus

6
Câu trả lời từ BYossarian là câu trả lời "đúng". "Phát triển menu trong safari máy tính để bàn cho phép bạn xem bảng điều khiển giả lập iOS: Phát triển -> Trình mô phỏng iPhone -> tên trang web"
snobojohan

222

Bạn có thể xem bảng điều khiển cho Trình mô phỏng iOS thông qua Safari trên máy tính để bàn. Nó tương tự như cách bạn sử dụng Safari trên máy tính để xem bảng điều khiển cho các thiết bị iOS vật lý.

Bất cứ khi nào trình giả lập đang chạy và có một trang web mở, sẽ có một tùy chọn trong menu Develop trong safari máy tính để bàn cho phép bạn xem bảng điều khiển giả lập iOS:

Phát triển -> Trình mô phỏng iPhone -> tên trang web


31
Đây là câu trả lời tốt nhất, cũng như bảng điều khiển "thực" của trình duyệt và bạn có thể thực hiện các lệnh javascript một cách nhanh chóng. Cảm ơn bạn.
Jorge Fuentes González

4
Tại sao tôi không thấy tài liệu này ở bất cứ nơi nào khác? Xuất sắc.
Củ cải

4
Trình kiểm tra web (khi được truy cập theo cách này) hiển thị hoàn toàn trống đối với tôi (Mavericks Macbook Pro - tất cả các bản cập nhật được cài đặt - Safari 7.0.5)
jamis0n

5
Safari dường như phát hiện ra rằng trình giả lập đang mở, nhưng thông báo "Không có ứng dụng có thể kiểm tra được"
biệt danh

4
bạn đang nói về điều gì ... điều này chỉ mở trình gỡ lỗi web cho một trang web được mở trong bất kỳ chế độ xem web nào của trình giả lập. Các thông báo bảng điều khiển bạn thấy có ghi lại trên bối cảnh javascript. Đó không phải là nhật ký của trình giả lập ios. Tui bỏ lỡ điều gì vậy? Có thể táo đã thay đổi một cái gì đó kể từ năm 2013, nhưng cho đến hôm nay, câu trả lời này có điểm số cao đến nực cười cho tiêu đề của câu hỏi
Radu Simionescu

107

Có một tùy chọn trong Trình mô phỏng để mở console

Debug > Open System Log

hoặc sử dụng

keyboard shortcut: ⌘/

Ảnh chụp màn hình trình đơn giả lập


90

iOS 8 và iOS 9

Trong iOS 8 và iOS 9, vị trí này hiện tại:

~/Library/Logs/CoreSimulator/<DEVICE_CODE>

Vì vậy, sau đây sẽ làm việc:

tail -f ~/Library/Logs/CoreSimulator/<DEVICE_CODE>/system.log

Các DEVICE_CODEgiá trị có thể được tìm thấy qua các lệnh điều khiển như sau:

instruments -s devices

1
Để tìm định danh thiết bị: trong Xcode, bấm Windows> Thiết bị. Một thiết bị và mã định danh sẽ được hiển thị trong khung bên phải.
neilco

3
Bạn có thể nhập instruments -s devicesvào bảng điều khiển
viteinfinite

2
s / bàn điều khiển / cửa sổ đầu cuối /
mharper 11/03/2015

28

Bạn không nên dựa vào instruments -s. Công cụ được hỗ trợ chính thức để làm việc với Trình mô phỏng từ dòng lệnh là xcrun simctl.

Thư mục nhật ký cho một thiết bị có thể được tìm thấy với xcrun simctl getenv booted SIMULATOR_LOG_ROOT. Điều này sẽ luôn luôn chính xác ngay cả khi vị trí thay đổi.

Bây giờ mọi thứ đang chuyển sang os_logdễ dàng hơn để mở Console.app trên máy chủ Mac. Các trình giả lập đã khởi động sẽ hiển thị dưới dạng nguồn nhật ký ở bên trái, giống như các thiết bị vật lý. Bạn cũng có thể chạy các lệnh log trong trình giả lập đã khởi động:

# os_log equivalent of tail -f
xcrun simctl spawn booted log stream --level=debug

# filter log output
xcrun simctl spawn booted log stream --predicate 'processImagePath endswith "myapp"'
xcrun simctl spawn booted log stream --predicate 'eventMessage contains "error" and messageType == info'

# a log dump that Console.app can open
xcrun simctl spawn booted log collect

# open location where log collect will write the dump
cd `xcrun simctl getenv booted SIMULATOR_SHARED_RESOURCES_DIRECTORY`

Nếu bạn muốn sử dụng các công cụ Safari Developer (bao gồm bảng điều khiển JS) với một trang web trong Trình mô phỏng : Khởi động một trong các trình giả lập, mở Safari, sau đó truy cập Safari trên máy mac của bạn và bạn sẽ thấy Trình mô phỏng trong menu.

Bạn có thể mở một URL trong Trình mô phỏng bằng cách kéo URL từ thanh địa chỉ Safari và thả vào cửa sổ Trình mô phỏng. Bạn cũng có thể sử dụng xcrun simctl openurl booted <url>.


Đây là câu trả lời đúng ngay từ Xcode 9.3, iOS 11. Các vị trí được đề cập trong các câu trả lời khác không còn đúng nữa.
Michael McGuire

Điều này làm việc với tôi trên Xcode Phiên bản 10.1 (10B61), Trình mô phỏng iOS 12.1. Sử dụng nó để xem đầu ra bảng điều khiển ứng dụng iOS trong Emacs. Các câu trả lời khác làm việc trong quá khứ, nhưng không còn.
tboyce12

Đối với tôi, điều làm việc là thứ tự (Tôi đã mở Safari trước Trình mô phỏng và vì vậy mục nhập menu không xuất hiện trong Safari)!
Shmarkus

Bạn đã tìm thấy tài liệu cho cờ "vị ngữ" ở đâu?
Hjulle

Mới đối với trình giả lập macOS 11 và iOS 14: log help predicatessẽ cung cấp cho bạn thêm thông tin. Định dạng vị ngữ theo NSPredicate.
russbishop

18

Nếu bạn đang sử dụng Swift , hãy nhớ rằng printlnsẽ chỉ in vào nhật ký gỡ lỗi (xuất hiện trong khu vực gỡ lỗi của xCode). Nếu bạn muốn in ra system.log, bạn phải sử dụng NSLognhư ngày xưa.

Sau đó, bạn có thể xem nhật ký giả lập thông qua menu của nó, Gỡ lỗi> Mở Nhật ký hệ thống ... (cmd + /)


12

tailing /var/log/system.logkhông làm việc cho tôi. Tôi tìm thấy nhật ký của mình bằng cách sử dụng Console.app. Họ đã ở trong

~/Library/Logs/iOS Simulator/{version}/system.log


Đây là một phương pháp tuyệt vời để nhìn lại các bản ghi từ, ví dụ ngày trước.
Troy

10

Bạn có thể sử dụng Consoleứng dụng (chọn thiết bị của mình trong Thiết bị) trên máy Mac để xem thông báo nhật ký được gửi bằng cách sử dụng NSLog(bạn sẽ không thấy nhật ký từ printchức năng).

nhập mô tả hình ảnh ở đây

Xin lưu ý rằng nếu bạn muốn xem nhật ký từ WebViewbạn nên sử dụngSafary -> Develop -> device

[Tìm nhật ký sự cố]


nhấn cmd then space bar Loại " Console" nhấn enter. Btw. đó nên là câu trả lời chính xác ngày hôm nay
Cô đơn

7

XCode> 6.0 VÀ iOS> 8.0 Kịch bản bên dưới hoạt động nếu bạn có phiên bản XCode> 8.0

Tôi sử dụng Script nhỏ bên dưới để nối các bản ghi giả lập vào bảng điều khiển hệ thống.

#!/bin/sh
sim_dir=`xcrun instruments -s | grep "iPhone 6 (8.2 Simulator)" | awk {'print $NF'} | tr -d '[]'`
tail -f ~/Library/Logs/CoreSimulator/$sim_dir/system.log

Bạn có thể chuyển vào loại giả lập được sử dụng trong Grep làm đối số. Như đã đề cập trong các bài viết trên, có lệnh simctl và dụng cụ để xem loại mô phỏng có sẵn để sử dụng tùy thuộc vào phiên bản Xcode. Để xem danh sách các thiết bị / mô phỏng có sẵn.

xcrun instruments -s

HOẶC LÀ

xcrun simctl list

Bây giờ bạn có thể chuyển loại Mã thiết bị HOẶC Trình mô phỏng làm đối số cho tập lệnh và thay thế "iPhone 6 (Trình mô phỏng 8.2)" bên trong grep thành $ 1


0

Tôi có thể mở nhật ký trực tiếp thông qua trình giả lập iOS: Debug -> Open System Log...Không chắc chắn khi điều này được giới thiệu, vì vậy nó có thể không có sẵn cho các phiên bản trước.


0

Bạn có thể thấy cửa sổ Bảng điều khiển Trình mô phỏng, bao gồm Safari Web Inspector và tất cả các Công cụ Phát triển Web bằng cách sử dụng ứng dụng Safari Technology Preview. Mở trang của bạn trong Safari trên Trình mô phỏng và sau đó đi tới Xem trước Công nghệ Safari> Phát triển> Trình mô phỏng.

Công cụ phát triển web


0

Không NSLoghoặc printnội dung sẽ ghi vào system.log, có thể được mở bằng Chọn Simulator -> Debug -> Open System logtrên Xcode 11.

Tôi tìm ra một cách, viết nhật ký vào một tệp và mở xx.logbằng. Terminal.appSau đó, nhật ký sẽ xuất hiện một cách Terminal.appsống động.

Tôi sử dụng Cốc Cốc đạt được điều này.

BƯỚC 1:

Thêm DDFileLogger DDOSLoggervà in đường dẫn nhật ký. config()nên được gọi khi ứng dụng ăn trưa.

static func config() {
    #if DEBUG
    DDLog.add(DDOSLogger.sharedInstance) // Uses os_log
    let fileLogger: DDFileLogger = DDFileLogger() // File Logger
    fileLogger.rollingFrequency = 60 * 60 * 24 // 24 hours
    fileLogger.logFileManager.maximumNumberOfLogFiles = 7
    DDLog.add(fileLogger)
    DDLogInfo("DEBUG LOG PATH: " + (fileLogger.currentLogFileInfo?.filePath ?? ""))
    #endif
}

BƯỚC 2:

Thay thế printhoặc NSLogbằng DDLogXXX.

BƯỚC 3:

$ tail -f {path of log}

Ở đây, thông báo sẽ hiện trong Terminal.app sống động.

Một điều nữa. Nếu không có bất kỳ thông báo nào đăng xuất, hãy đảm bảo Environment Variables-> OS_ACTIVITY_MODEISNOT tắt.

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.