Macアプリでリリースビルドでデバッグログが出力されているか確認する方法

FinderでMacアプリを探す

  • Xcodeで「Archive」をして「Distoribute App」で「Copy App」を選択しNextを押すことでアプリをMacに出力することができます。

  • デスクトップなど適当な場所に保存したら、そのフォルダを探しますと中にはxxx.appがあると思います。

  • アプリのアイコンの上で右クリックをすると、「パッケージ内容の表示」という項目があるのでクリックします。

  • Contents → MacOSとフォルダを進むと、アプリのバイナリー(本体)が現れます。

  • そこでアプリを右クリックして、「このアプリケーションで開く」を選択、「ターミナル」で実行します。

  • すると、ターミナルが起動してアプリが実行されます。このターミナルに出力されるのが何かしらアプリの出力しているログになります。

printであったりNSLogであったり、デバッグプリントがある場合には、実行時に出力しないように場合分けをしておきましょう。

独自のメソッドを書いてもよいですが、とりあえず、以下のようなprintとNSLogについてDEBUG時のみデバッグプリントの出力をする設定をしておくと、printについては気にせずにプログラミングに集中できると思います。

import Foundation

public func print(_ object: Any..., separator: String = " ", terminator: String = "\n") {
    #if DEBUG
        let output = object.map { "\($0)" }.joined(separator: separator)
        Swift.print(output, terminator: terminator)
    #endif
}

public func NSLog(_ object: Any..., separator: String = " ", terminator: String = "\n") {
    #if DEBUG
        let output = object.map { "\($0)" }.joined(separator: separator)
        Swift.print(output, terminator: terminator)
    #endif
}

環境

 % sw_vers;xcodebuild -version;swift --version
 
 ProductName:	macOS
ProductVersion:	11.4
BuildVersion:	20F71
Xcode 12.5
Build version 12E262
Apple Swift version 5.4 (swiftlang-1205.0.26.9 clang-1205.0.19.55)
Target: x86_64-apple-darwin20.5.0

Category