2008-10-10 71 views
31

我想強制當前的執行行到同一個函數中的特定行,可能跳過中間行。我所有的老派調試器都有這個功能,但是我在日食中找不到它。有沒有辦法做到這一點,而無需更改代碼?如何在eclipse java調試器中設置當前的執行線?

+0

尋找類似Visual Studio的功能「設置下一條語句」,但對Java /月食:http://msdn.microsoft.com /en-us/library/09yze4a9.aspx – 2011-04-26 19:50:54

+1

有錯誤(或可能)在Eclipse錯誤中的功能請求https://bugs.eclipse.org/bugs/show_bug.cgi?id=287795 – Amitd 2012-10-26 18:04:09

+0

As + PhiLho points如果你想要執行的行在前面,通過所有方法「運行到行」。但是,如果您已經超過了線路,那麼您可以「放下幀」進入函數調用的開始位置。然後你像以前一樣「跑線」。 – Robino 2016-01-18 16:02:11

回答

14

前兩個答案似乎錯過了這個話題,除非我不瞭解這個問題。

我的理解,一個功能,我自己搜索,是要跳過行數(在單步執行代碼時),並設置程序計數器(採取組裝的詞彙)爲指定的行。跳過一些代價高昂的對象創建,查看一些錯誤情況等等可能會很有趣。我曾經在Visual Studio(C或C++代碼)中這樣做過。

我還沒有發現在Eclipse中,也沒有在NetBean中發現。它可能是JVM的限制,或者是一些策略的執行......

執行行命令當然執行當前執行位置和指定執行位置之間的所有行。

-5

「Run to line」似乎需要程序運行並處於暫停狀態才能使用。另一種選擇是在調試模式下運行時爲該行設置斷點。

  1. 在同一行的源窗格中雙擊左側豎直條以添加斷點;或者,
  2. 選擇該行並轉到運行>切換斷點。

至少,這是在Eclipse 3.3.2中。

+2

-1運行到與修改程序執行無關。 – 2011-12-11 18:23:00

2

我認爲這在Java中是不可能的。允許「退後」的唯一功能是使用「drop to frame」,它將您帶回當前幀的第一條指令。至少我沒有看到任何具有此特定功能的調試器,但我一直無法在網上找到它爲什麼如此...

我知道Visual C中的調試器允許更改爲指針。我會繼續尋找,也許至少我們會知道爲什麼會這樣,但它似乎是某種設計限制。

11

我也一直在尋求這個功能,而「跑線」並不是一回事。

這可能是JVM的限制。 Java並沒有實現goto,雖然它確實有跳轉聲明,如break和continue。但是,這些都在塊級。如果這是JVM的限制,我的猜測是它更可能是由於安全體系結構。 程序計數器的嚴格控制正在削弱入侵者,如病毒 - 和可悲的調試器。

0

功能請求說這是不可能的

https://bugs.eclipse.org/bugs/show_bug.cgi?id=287795學分to AmitdDarin Wright說,這是基礎的Java調試程序的限制:

目前,這是不可能的Java調試器作爲本機調試接口不能任意移動/設置程序計數器。

C/C++

CDT支持它然而(與氖的,Ubuntu 14.04測試)。右鍵點擊你想要去的路線,並選擇:

  • 「移至行」:跳轉到行並中斷有
  • 「繼續在行」:跳轉到行,並從那裏繼續執行

這也可作爲進一步的證據表明,有一個潛在的Java限制,如Java更趨於豐富的功能在Eclipse中,這些菜單項中不存在的Java旁邊的「運行至行」(這不不跳過線的執行)。

這個測試程序將打印0,如果你跳行i = 1

#include <stdio.h> 

int main(void) { 
    int i; 
    i = 0; /* Break here. */ 
    i = 1; 
    printf("%d\n", i); /* Jump to here. */ 
} 
相關問題