java - Android Studio 线程调试

标签 java multithreading debugging android-studio breakpoints

我在使用 Android Studio 1.1 调试多线程应用时遇到了问题。似乎当一个断点被击中时,所有其他线程也停止了,而不仅仅是带有断点的那个。我在 Activity 的 onCreate 中使用以下方法创建了一个简单的测试应用程序。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Thread a = new Thread("thread-a") {
        @Override
        public void run() {
            Log.v("thread", "thread-a");
        }
    };

    Thread b = new Thread("thread-b") {
        @Override
        public void run() {
            Log.v("thread", "thread-b");
        }
    };

    a.start();
    b.start();
}

我在线程 a 和线程 b 的 Log.v 行设置断点,然后在 Lollipop Nexus 5 上以 Debug模式运行它。

当应用程序启动时,它会在线程 a 中遇到断点,但我注意到的第一个问题是应用程序的 UI 是空白的,就好像主线程已暂停一样。接下来,我看到线程 b 中的断点也被命中,所以我在 Android Studio 的调试器中打开了线程 View ,但是当我去展开线程 b 箭头时,那里什么也没有。当我展开主线程时,它显示它在 onStart() 中的某处暂停。

Android Studio screenshot

是我做错了什么还是这个调试器无法同时调试多个线程?

最佳答案

在 IntelliJ IDEA(Android Studio 基于 IntelliJ)中,当您放置断点时,如果您右键单击它会显示一个对话框,您可以选择是暂停所有线程(默认)还是仅暂停该线程.

您正在暂停所有线程,因为它是默认设置。

关于java - Android Studio 线程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245411/

相关文章:

c - 多线程tcp服务器的并发连接数

c# - 如何在每次访问类时设置断点

c# - Expression.DebugInfo 如何标记表达式?

java - 如何在 Maven 过滤后验证 XML?

c++ - 使用 2 个线程的代码运行速度比使用 1 个线程慢 6 倍

java - 使用线程同步的序列号

c++ - GDB 调试器在 Code::blocks 中不起作用

java - 像 JavaScript 一样覆盖对象的方法

java - JUnit 测试用例失败

java - 使用 Java 反射访问嵌套字段