mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-17 04:20:00 +03:00
Log info about process and thread in the Rageshake
This commit is contained in:
parent
4ffab7fc13
commit
03d83b2aff
2 changed files with 78 additions and 0 deletions
|
@ -78,6 +78,7 @@ class BugReporter @Inject constructor(
|
||||||
private val systemLocaleProvider: SystemLocaleProvider,
|
private val systemLocaleProvider: SystemLocaleProvider,
|
||||||
private val matrix: Matrix,
|
private val matrix: Matrix,
|
||||||
private val buildMeta: BuildMeta,
|
private val buildMeta: BuildMeta,
|
||||||
|
private val processInfo: ProcessInfo,
|
||||||
private val sdkIntProvider: BuildVersionSdkIntProvider,
|
private val sdkIntProvider: BuildVersionSdkIntProvider,
|
||||||
) {
|
) {
|
||||||
var inMultiWindowMode = false
|
var inMultiWindowMode = false
|
||||||
|
@ -500,6 +501,7 @@ class BugReporter @Inject constructor(
|
||||||
fun openBugReportScreen(activity: FragmentActivity, reportType: ReportType = ReportType.BUG_REPORT) {
|
fun openBugReportScreen(activity: FragmentActivity, reportType: ReportType = ReportType.BUG_REPORT) {
|
||||||
screenshot = takeScreenshot(activity)
|
screenshot = takeScreenshot(activity)
|
||||||
logDbInfo()
|
logDbInfo()
|
||||||
|
logProcessInfo()
|
||||||
activity.startActivity(BugReportActivity.intent(activity, reportType))
|
activity.startActivity(BugReportActivity.intent(activity, reportType))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,6 +510,11 @@ class BugReporter @Inject constructor(
|
||||||
Timber.i(dbInfo)
|
Timber.i(dbInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun logProcessInfo() {
|
||||||
|
val pInfo = processInfo.getInfo()
|
||||||
|
Timber.i(pInfo)
|
||||||
|
}
|
||||||
|
|
||||||
private fun rageShakeAppNameForReport(reportType: ReportType): String {
|
private fun rageShakeAppNameForReport(reportType: ReportType): String {
|
||||||
// As per https://github.com/matrix-org/rageshake
|
// As per https://github.com/matrix-org/rageshake
|
||||||
// app: Identifier for the application (eg 'riot-web').
|
// app: Identifier for the application (eg 'riot-web').
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 New Vector Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package im.vector.app.features.rageshake
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.Application
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.Process
|
||||||
|
import java.lang.reflect.Method
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
class ProcessInfo @Inject constructor() {
|
||||||
|
fun getInfo() = buildString {
|
||||||
|
append("===========================================\n")
|
||||||
|
append("* PROCESS INFO *\n")
|
||||||
|
append("===========================================\n")
|
||||||
|
val processId = Process.myPid()
|
||||||
|
append("ProcessId: $processId\n")
|
||||||
|
append("ProcessName: ${getProcessName()}\n")
|
||||||
|
append(getThreadInfo())
|
||||||
|
append("===========================================\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("PrivateApi")
|
||||||
|
private fun getProcessName(): String? {
|
||||||
|
return if (Build.VERSION.SDK_INT >= 28) {
|
||||||
|
Application.getProcessName()
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
val activityThread = Class.forName("android.app.ActivityThread")
|
||||||
|
val getProcessName: Method = activityThread.getDeclaredMethod("currentProcessName")
|
||||||
|
getProcessName.invoke(null) as? String
|
||||||
|
} catch (t: Throwable) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getThreadInfo() = buildString {
|
||||||
|
append("Thread activeCount: ${Thread.activeCount()}\n")
|
||||||
|
Thread.getAllStackTraces().keys
|
||||||
|
.sortedBy { it.name }
|
||||||
|
.forEach { thread -> append(thread.getInfo()) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Thread.getInfo() = buildString {
|
||||||
|
append("Thread '$name':")
|
||||||
|
append(" id: $id")
|
||||||
|
append(" priority: $priority")
|
||||||
|
append(" group name: ${threadGroup?.name ?: "null"}")
|
||||||
|
append(" state: $state")
|
||||||
|
append(" isAlive: $isAlive")
|
||||||
|
append(" isDaemon: $isDaemon")
|
||||||
|
append(" isInterrupted: $isInterrupted")
|
||||||
|
append("\n")
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue