Иногда у наших пользователей происходит сбой приложения из-за внезапной недоступности базы данных:
1) android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14)
или
2) java.lang.RuntimeException: Could not read input channel file descriptors from parcel.
или
3) android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=1 (# cursors opened by this proc=1)
И я заметил, чтов этот момент я даже не могу извлечь logcat:
07-17 16:57:20.722 E/APP ( 2301): 2019-07-17_16:57:20.598+0300 [FileUtils] logcat extraction error
07-17 16:57:20.722 E/APP ( 2301): java.io.IOException: Error running exec(). Command: [logcat, -d, -v, time] Working Directory: null Environment: null
07-17 16:57:20.722 E/APP ( 2301): at java.lang.ProcessManager.exec(ProcessManager.java:211)
07-17 16:57:20.722 E/APP ( 2301): at java.lang.Runtime.exec(Runtime.java:174)
07-17 16:57:20.722 E/APP ( 2301): at java.lang.Runtime.exec(Runtime.java:247)
07-17 16:57:20.722 E/APP ( 2301): at java.lang.Runtime.exec(Runtime.java:190)
....
07-17 16:57:20.722 E/APP ( 2301): Caused by: java.io.IOException: Too many open files
07-17 16:57:20.722 E/APP ( 2301): at java.lang.ProcessManager.exec(Native Method)
07-17 16:57:20.722 E/APP ( 2301): at java.lang.ProcessManager.exec(ProcessManager.java:209)
07-17 16:57:20.722 E/APP ( 2301): ... 8 more
Итак, у меня возникает вопрос - можно ли получить во время выполнения (на устройстве пользователя) список всех открытых файловых дескрипторов в моем процессе(и вытяните его, например, в logcat)?
PS Мне не удалось запустить процесс записи logcat в файл. Но работает дамп файла app.hprof ... Хотя я не нашел здесь ничего особенного.