【问题标题】:Process suspended after start in Eclipse Debugger在 Eclipse 调试器中启动后进程暂停
【发布时间】:2014-07-24 15:19:04
【问题描述】:

我正面临 Eclipse 调试器的以下问题。我直接从 Eclipse 以调试模式启动 JBoss 5.1(此过程几乎整天运行而无需重新启动),有时当我想使用客户端应用程序(Swing + OSGi)启动新的调试会话或事件调试一些 JUnit-测试 eclipse 启动进程,但是这个新进程立即被挂起。当我将 Perspective 更改为调试时,我可以看到两个进程 - JBoss 运行没有问题,但新进程被挂起 - 控制台输出清晰,进程帽子 Eclipse-Icon 用于挂起的线程。有时选择此进程并按下绿色的“恢复”按钮会有所帮助,有时我必须使用“终止删除”来终止此进程。当我尝试再次运行此进程时,我有时会在相同的情况下运行,有时会运行新进程而没有问题。

真正奇怪的是,当 eclipse “暂停”新的 Client-App-process 并且我在 Debug Perpective 中杀死 JBoss 进程时,第二个暂停的进程突然运行。我认为,这两个进程在一些“死锁”情况下运行,但我不知道如何解决这个问题。

我没有任何想法,这个问题的原因是什么...... 我的环境:Eclipse 4.3.2,Java 1.7.0_21-64bit

【问题讨论】:

    标签: java eclipse debugging


    【解决方案1】:

    这个程序可能会帮助您了解您的情况:

    class Solution {
        public static ListNode reverseKGroup(ListNode head, int k) {
            ListNode dummyHead = new ListNode(0);
            dummyHead.next = head;
            ListNode prev = dummyHead, cur = dummyHead;
            while (cur != null) {
                for (int i = 0; i < k; i++) {
                    if (cur == null || cur.next == null) return dummyHead.next;
                    cur = cur.next;
                }
                ListNode nxt = prev.next;
                prev.next = reverse(prev.next, cur.next);
                prev = nxt;
                System.out.println(prev);
                cur = nxt;
            }
            return dummyHead.next;
        }
    
        private static ListNode reverse(ListNode head, ListNode tail) {
            if (head == tail || head.next == tail) return head;
            ListNode prev = head, cur = head.next;
            while (cur != tail) {
                ListNode nxt = cur.next;
                cur.next = prev;
                //System.out.println("cur.next:" + cur.next);
                prev = cur;
                //System.out.println("prev:" + prev);
                cur = nxt;
            }
            //head.next = tail;
            return prev;
        }
    
        public static void main(String[] args) {
            ListNode l1 = new ListNode(1);   
            l1.next = new ListNode(2);  
            l1.next.next = new ListNode(3);  
            l1.next.next.next = new ListNode(4);
            l1.next.next.next.next= new ListNode(5);
    
            System.out.println(reverseKGroup(l1, 3));
        }
    }
    
    public class ListNode {
        int val;
        ListNode next;
        ListNode(int x) { val = x; }
    
        public String toString(){
            String retVal = "";
            ListNode n = this;
            while(n!=null){
                retVal += n.val +" ";
                n = n.next;
            }
            return retVal;
        }
    }
    

    当您启动调试器并尝试调试 prev 的值时,进程将暂停。

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 2023-01-30
      • 2013-02-10
      • 2012-10-12
      • 1970-01-01
      相关资源
      最近更新 更多