gpt4 book ai didi

android - 为什么要等待调试器然后将调试器附加到进程?

转载 作者:行者123 更新时间:2023-12-02 18:30:16 25 4
gpt4 key购买 nike

有什么意义

android.os.Debug.waitForDebugger();

我知道我们[有时]需要使用this function为了调试 Service ,但我的问题是:

  • 为什么我们必须这样做?
  • 为什么会有这个方法?它还有什么其他目的?
  • 这对意味着什么 attach a debugger to a process ,为什么我们必须这样做?为什么必须以这种方式调试 Service,而不是 ActivityBroadcastReceiver

人们可能会认为调试项目中的任何类型的代码都是很简单的。但事实并非如此。无论如何,不​​是为了服务

这个特别程序存在的理由是什么?它还有什么用途?

enter image description here

Wait until a debugger attaches. As soon as the debugger attaches, this returns, so you will need to place a breakpoint after the waitForDebugger() call if you want to start tracing immediately.

为什么仍然没有答案。

更新:

我发现了此功能的一个用例:当 Android 应用程序在应用程序进程被终止后自动重新启动时。当用户在应用程序设置中切换运行时权限时,该进程将被终止。更一般地说,应用程序进程会在以下任何时候被终止并重新启动:

android.os.Process.killProcess(android.os.Process.myPid());

被调用。

要在进程重新启动后调试应用程序,请在代码中编写 android.os.Debug.waitForDebugger() ,然后将调试器附加到当前进程。

Android: how to debug app's start-up process .

这是此函数的一个用例。

References:

Debugging a service .

A proper way to Debug a Service in Android Studio? .

Breakpoint in service not working .

How to debug an Android Background Service? .

How to debug a Service? .

How to Attach debbuger to process from the first line without compile code every time .

you can attach a debugger after the app is already open .

Possibly related:

Accessibility service disabled upon each debug run

When using the Java debugger in Intellij what does “Drop Frame” mean?

Configure on-device developer options .

Test your service .

Force application to restart from first Activity .

最佳答案

我不确定我的答案是否正确,因为你可能会期待里面有复杂的见解。实际上,有一个非常简单的过程来连接和拦截过程响应。

enter image description here

  • 为什么会有这个方法?它还有什么其他目的?

如您所见,回答这个问题非常简单。由于进程拦截期间的竞争条件,您将无法在早期断点处停止,而应调用 waitForDebugger()。在最常见的地方,例如 Service 调试和 Application

  • “将调试器附加到进程”是什么意思,为什么我们必须这样做?为什么必须以这种方式调试 Service,而不是 Activity 或 BroadcastReceiver?

这是另一个问题,我不确定这里的上下文,但是。我们需要调用该方法,并在我们的 Service 使用 list 中的另一个进程的情况下手动附加到进程。显然,调试桥会在应用程序的当前 Activity 进程上设置,但由于我们可以从另一个进程运行Service,因此我们需要手动将其添加到调试桥并等待调试连接。

关于android - 为什么要等待调试器然后将调试器附加到进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58077454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com