質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
iPad

iPadは、Appleがデザインしたタブレット型コンピュータです。iPadアプリケーションは通常Xcode IDEのObjective-Cで書かれますが、iPadアプリケーションを組むためのほかのツールを使うことも可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

クラッシュ

クラッシュ(crash)はプログラムを完全に停止させてしまう修復不可能なエラー結果を指します。

意見交換

クローズ

6回答

1072閲覧

iPadアプリが強制終了する原因特定

FraYak32iSEx

総合スコア0

iPad

iPadは、Appleがデザインしたタブレット型コンピュータです。iPadアプリケーションは通常Xcode IDEのObjective-Cで書かれますが、iPadアプリケーションを組むためのほかのツールを使うことも可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

クラッシュ

クラッシュ(crash)はプログラムを完全に停止させてしまう修復不可能なエラー結果を指します。

0グッド

1クリップ

投稿2023/12/20 23:53

編集2023/12/21 08:11

0

1

知りたいこと

iPadアプリが強制終了する原因特定のための、調査方法を知りたいです。

背景、状況

数年前に外注で開発した iPadOSアプリ があります。
最近、アプリを使用中に頻繁にアプリが強制終了する事象が発生しております。
強制終了する原因を特定したいので、原因特定ためのアプローチ方法(クラッシュログなど)がいくつかあると思うのですが、その方法を知りたいです。
まずは、切り分け(iPad 本体 or 通信環境 or プログラム or その他 など)でもしたいと思っております。
iPad は複数台利用しており、iPadOS のバージョンは、16または17の最新バージョンです。
アプリの再インストール
iPad再起動
は実施しましたが、解消されません。

ご意見いただけますと幸いです。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答6

#1

hoshi-takanori

総合スコア7899

投稿2023/12/21 01:55

クラッシュログの取得方法はこんな感じでしょうか。
https://qiita.com/mashunzhe/items/1c98dcb07fd63e756589

たぶん iOS の更新に伴う変更が必要な可能性があると思いますが、具体的な方法はそのアプリが何(言語やフレームワークなど)で作られてるかや、利用している iOS の機能、ソースの有無、配布方法によるでしょうね…。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

FraYak32iSEx

総合スコア0

投稿2023/12/21 08:02

#1

アプリ自体は、Swift で作られていてデータは CloudKit に保存されています。
利用している iOS の機能は、すぐにはわからない状況です。
ADP 契約あり、Apple に非公開 App として承認されているアプリでして、
AppleBuisnessManager で一括購入し、MDM で各 iPad に配布しております。
iPad にサインインする際の AppleID は、管理対象 AppleID を使っております。

追加で伺いたいのですが、アプリが強制終了したタイミングで、
iPad > 設定アプリ > 解析と改善 > 解析データ
内に、アプリ名とタイムスタンプを含んだファイル名で、拡張子「.ips」ファイルが出力されており、
このファイルがクラッシュログと思っております。
クラッシュログには、「Exception」というようなワードが吐かれると思っていたのですが、
上述の .ips ファイルには、「Exception」というようなワードは吐かれていませんでした。
Exception」というようなワードは吐かれていなくても、Xcodeなどで解析すれば、原因特定できるものなのでしょうか。
※ネイティブアプリに関する知見がほぼないので、このような質問となっていること、ご承知いただけますと幸いです。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

hoshi-takanori

総合スコア7899

投稿2023/12/21 08:49

クラッシュの原因は .ips ファイルの Event という項目に書いてある場合もあるようです。
(普段は Crashlytics という便利なサービスに頼ってるので、生の .ips ファイルの解析は詳しくありませんが…。)

いずれにせよ、解析にはネイティブアプリの知見が必要でしょうね。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#4

FraYak32iSEx

総合スコア0

投稿2023/12/21 10:23

hoshiさん、ありがとうございます。
以下のご回答、私にはとても貴重な情報で、大変助かります!
・Eventという項目に書いてあるかも
・Crashlyticsというサービスがあること

試行錯誤してみつつ、自分だけで解決するのはムリそうなので他者を頼ってみようと思います。。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#5

FraYak32iSEx

総合スコア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

perfectibility

総合スコア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」と表示された場合、クラッシュではなく、単なる警告です (バックトレースの収集中に処理が少し遅くなる可能性があります)。プロセスのクラッシュなど、他のアクションがある可能性がありますが、わかりません。

https://developer.apple.com/documentation/xcode/reducing-disk-writes#Eliminate-excessive-write-operations

これを無効にする方法はないようです。

つまりこのログはただの警告の可能性が出てきました。
回答内にある公式サイトで詳しい説明と解決するためのツール(MetricKit)とその使用方法が詳しく載っているので頑張ってください。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問