0
1
知りたいこと
iPadアプリが強制終了する原因特定のための、調査方法を知りたいです。
背景、状況
数年前に外注で開発した iPadOSアプリ があります。
最近、アプリを使用中に頻繁にアプリが強制終了する事象が発生しております。
強制終了する原因を特定したいので、原因特定ためのアプローチ方法(クラッシュログなど)がいくつかあると思うのですが、その方法を知りたいです。
まずは、切り分け(iPad 本体 or 通信環境 or プログラム or その他 など)でもしたいと思っております。
iPad は複数台利用しており、iPadOS のバージョンは、16または17の最新バージョンです。
アプリの再インストール
iPad再起動
は実施しましたが、解消されません。
ご意見いただけますと幸いです。。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
#1
総合スコア7899
投稿2023/12/21 01:55
クラッシュログの取得方法はこんな感じでしょうか。
https://qiita.com/mashunzhe/items/1c98dcb07fd63e756589
たぶん iOS の更新に伴う変更が必要な可能性があると思いますが、具体的な方法はそのアプリが何(言語やフレームワークなど)で作られてるかや、利用している iOS の機能、ソースの有無、配布方法によるでしょうね…。
#2
総合スコア0
投稿2023/12/21 08:02
アプリ自体は、Swift で作られていてデータは CloudKit に保存されています。
利用している iOS の機能は、すぐにはわからない状況です。
ADP 契約あり、Apple に非公開 App として承認されているアプリでして、
AppleBuisnessManager で一括購入し、MDM で各 iPad に配布しております。
iPad にサインインする際の AppleID は、管理対象 AppleID を使っております。
追加で伺いたいのですが、アプリが強制終了したタイミングで、
iPad > 設定アプリ > 解析と改善 > 解析データ
内に、アプリ名とタイムスタンプを含んだファイル名で、拡張子「.ips」ファイルが出力されており、
このファイルがクラッシュログと思っております。
クラッシュログには、「Exception」というようなワードが吐かれると思っていたのですが、
上述の .ips ファイルには、「Exception」というようなワードは吐かれていませんでした。
「Exception」というようなワードは吐かれていなくても、Xcodeなどで解析すれば、原因特定できるものなのでしょうか。
※ネイティブアプリに関する知見がほぼないので、このような質問となっていること、ご承知いただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#3
総合スコア7899
投稿2023/12/21 08:49
クラッシュの原因は .ips ファイルの Event という項目に書いてある場合もあるようです。
(普段は Crashlytics という便利なサービスに頼ってるので、生の .ips ファイルの解析は詳しくありませんが…。)
いずれにせよ、解析にはネイティブアプリの知見が必要でしょうね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#4
総合スコア0
投稿2023/12/21 10:23
hoshiさん、ありがとうございます。
以下のご回答、私にはとても貴重な情報で、大変助かります!
・Eventという項目に書いてあるかも
・Crashlyticsというサービスがあること
試行錯誤してみつつ、自分だけで解決するのはムリそうなので他者を頼ってみようと思います。。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#5
総合スコア0
投稿2024/01/02 23:02
クラッシュログについて質問させていただきます。
先述のクラッシュログ(.ips)に以下が出力されていました。
Event: disk writes Action taken: none Writes: 1081.78 MB of file backed memory dirtied over 777 seconds (1391.62 KB per second average), exceeding limit of 12.43 KB per second over 86400 seconds Writes limit: 1073.74 MB Limit duration: 86400s Writes caused: 1081.78 MB Writes duration: 777s Duration: 777.35s Duration Sampled: 755.30s Steps: 35 (10.49 MB/step)
上記についてネットで調査はしたのですが、確実な情報にたどり着けませんでした。
結局のところ、
・このログは何を意味しているのか
・アプリのクラッシュに結びつくようなイベントなのか
がわからず、皆様のお力をお借りしたいです。
どうぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#6
総合スコア46
投稿2024/01/12 17:31
iosはまっったく知らない素人なので以下の情報は間違っている可能性があります、ご了承ください。
クラッシュログを読んでみると
3行目に「書き込み:1081.78MB」
4行目に「書き込み制限(上限?):1073.74MB」
とあるので、
書き込み上限を超えた書き込みをしようとしたためにクラッシュしたのでは?と思いクラッシュログの1行目で検索をかけたところ、一番上にDisk Write Exception(日本語訳:ディスク書き込み例外)がヒットしました。
内容をGoogle翻訳に通すと
テスト フライト アプリケーションがディスク書き込み操作中にクラッシュしました。クラッシュログに次のエラーが表示されました
705 秒間で 1073.76 MB のファイル バックアップ メモリがダーティになり (1 秒あたり平均 1522.14 KB)、86400 秒で 1 秒あたり 12.43 KB の制限を超えました
少し調べた結果、Apple のドキュメントから、アプリからのディスク書き込みが 24 時間以内に特定の制限を超えると、システムが例外をスローすることがわかりました。
[ https://developer.apple.com/documentation/xcode/reducing-disk-writes )
とあります。
クラッシュログを見ると3行目にも同様の文が書いてあるようです。
続いてStackOverFlowにて上限値の「1073.74MB」で検索した結果
1073.75 MB of file backed memory dirtied over 186 seconds (5770.75 KB per second average), exceeding limit of 12.43 KB per second over 86400 secondsがヒットしました。
この回答をGoogle翻訳に通すと
これは、SSD 上で 24 時間あたり 1 GB 未満のファイル書き込みを厳密に強制する macOS/iOS の一般的な制限のようです。この制限を超えると、警告がトリガーされます。ログに「Action: none」と表示された場合、クラッシュではなく、単なる警告です (バックトレースの収集中に処理が少し遅くなる可能性があります)。プロセスのクラッシュなど、他のアクションがある可能性がありますが、わかりません。
これを無効にする方法はないようです。
つまりこのログはただの警告の可能性が出てきました。
回答内にある公式サイトで詳しい説明と解決するためのツール(MetricKit)とその使用方法が詳しく載っているので頑張ってください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。