Eclipse-デバッガーがブレークポイントで停止しない


96

JUnitをトラブルシューティングしようとしています。ソースコードでは、2つの場所にブレークポイントを設定しています。1)静的メンバーが初期化される行2)テストケースの1つの最初の行。

デバッガーは静的フィールド初期化行で停止します。しかし、それはテストケースでは止まりません。テストケースのどこにブレークポイントを設定しても、デバッガーはそこで停止しません。追加したログメッセージがログに表示されるのを確認できるので、テストケースが実行されることは確かです。

どんな助けでも大歓迎です。

私はEclipse GalileoとJUnit4ランチャーを使用しています。


1
.classファイルにデバッグ情報を生成するために-gオプションをオンにしてコードをコンパイルしていますか?もちろん、それは必須です。
duffymo 2009

はい、それは-gオプションでコンパイルされます。
ロイ

また、使用しているJUnitとJREのバージョンに関する情報を追加できますか?これはこの文脈で役立つと思います。
Vineet Reynolds

ちなみに、使用中のJDKはより重要です(これを引き起こす可能性のある混乱したJDKがいくつかあります)。JUnitのバージョンに関するクエリは無視してください。
Vineet Reynolds、

すみません、それを含めるべきでした。JDK 1.6 update 14.
Roy

回答:


39

これは、JDK 6アップデート15のリリースノートに示されているようにJDK 6アップデート14のバグの1つに関連している可能性があります。

これが実際に問題であることが判明した場合は、JDKの上位バージョンに移行する必要があります(ただし、6u16、6u18、7b1に対する修正がリリースされているため、保証はありません)。最善の策は、-XX:+ UseParallelGCフラグを使用することです。最小および最大ヒープサイズのサイズを増やして、最初のGCを遅らせるには、一時的に解放します。

ところで、Eclipseでこのバグレポートを使用し、他の人がどのように苦労してきたかを追跡します。


1
JDK 1.6 update 16にアップグレードしました。設定したすべてのブレークポイントで停止します。ご協力ありがとうございます。
ロイ

どういたしまして。u15のリリースノートにもかかわらず、u16はこれが十分に修正されたリリースのようです。
Vineet Reynolds

おかげで@Vineet-私はこれに私の髪を引っ張っていました:-)
ジム・ギャリソン

@VineetReynolds:JbossおよびJava ee 6に関連する貴重な回答を見ました。この問題のトラブルシューティングを手伝っていただけますか?stackoverflow.com/questions/28954323/…–
ブレインストーム

96

修正は、実行/すべてのブレークポイントをスキップするのと同じくらい簡単です。私のために働いた。


3
私が何とかそれをクリックしたことに
気づく

1
ありがとう...どういうわけかそのツールバーのアイコンを誤ってクリックしたに違いありません:-P
kenyee

4
ありがとう...いつクリックされたか
わから

1
どうもありがとうございます。他のユーザーの場合、この状況でブレークポイントを作成すると、スラッシュが表示されます。
saurabheights 2016年

同じことが私にも起こりました。一度もクリックしなかった... !! バージョン:火星リリース(4.5.0)ビルドID:20150621から1200
Beezer

52

状況に応じて、[実行]> [デバッグ構成]で[メインで停止]が選択されていることを確認します。


1
投稿する前に、以前の回答を必ずお読みください。問題は彼らのjvmバージョン..であり、3年前に解決されました。以前の回答ではまだカバーされていなかった、重要な貢献があった場合を除いて、古いスレッドを復活させないことをお勧めします。
リー

6
ありがとう。@Answererあなたの答えは私の問題を解決しました。「Stop in main」が設定されていなかったのは奇妙です。
Yu Shen

25
彼の回答は、以前の回答ではまだカバーされていなかった重要な貢献をしたようです:)
scubbo

これはJavaアプリケーションのオプションですが、Androidアプリケーションのオプションではありません。
Noumenon 2013

21

通常、これが発生すると(まれですが発生します)、実行されているコードがエディターのコードとは異なります。Eclipseでは、ビルドされたクラスとエディターのコードが同期していない場合があります。それが起こると、私はあらゆる種類の奇妙なデバッガーの動作(空の行のデバッグ、コードの行のスキップなど)を取得します。

Eclipseを再起動し、すべてのプロジェクトをクリーンアップしてすべてを再ビルドすると、通常はすべてがクリアされます。また、Mavenプラグイン(以前のバージョン...しばらくは使用していませんでした)も使用する傾向がありました。

そうでなければ、それはバグかもしれません、おそらくVineetが述べたもの、

お役に立てれば


ええ、あなたが言ったことは、コードを自動的に再コンパイルしないIDEでもっと起こります。Oracle JDeveloper(個人的な経験から)およびより少ない程度(Netbeans)が必要であることがわかりました。
Vineet Reynolds

1
いいアドバイス。十分に言っていません。時々私たちは問題を考えすぎて、それは単にシステムが同期していないことです。たとえば、単純な問題をトラブルシューティングするためにコンピュータを再起動する場合などです。
Xonatron 2012年

ありがとう、それが私の場合の問題でした。ばかげているように聞こえますが、ビルド後の単純なクリーンとF5でうまくいきました。
jfajunior

20

Eclipseツールバーのすべてのブレークポイントを誤ってスキップした可能性があります。これを修正するには、Eclipse-> Run-> Skip All Breakpointsに移動します。


1
うーん、これにもショートカットがあります。たぶん誤ってメニュー項目をチェックしていませんが、Ctrl + Alt + Bを押した可能性が高いです。とにかく、ありがとう。
Patru

3

Project-> JRE 8でCleanが機能するようでした


2

デバッガーがリモートで機能するためには、デバッグ情報とともにjava .classファイルをコンパイルする必要があります。「-g:none」オプションがコンパイラに渡された場合、クラスファイルには必要な情報がないため、デバッガはソースコードのブレークポイントをリモートのそのクラスと一致させることができません。一方、jar / classファイルが難読化されている場合は、デバッグ情報もありません。あなたの回答によると、おそらくこれはあなたのケースではありませんが、この情報は同じ問題に直面している他の人にとって役立つかもしれません。


2

私の場合の問題は、デバッグビューでデバッグビューを開いていなかったことです。

1-デバッグパースペクティブを開いていることを確認します。

Eclipseデバッガーが機能しない1

2-デバッグビューが開いていることを確認します。

Eclipseデバッガーが機能しない2



1

JDK7の場合、run-> Debug Configurationsを選択し、「デバッグ時にテスト実行後にJUnitを実行し続ける」をチェックします。


1

「実行>自動的にビルド」のチェックを外していて、それを再チェックするのを忘れたときに、一度私に起こりました。


1

パッケージは必ず最初に宣言してください。私のグルーヴィーなコードでは、これはブレークポイントで停止します:

package Pkg1

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

これはブレークポイントで停止しません:

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

多くの苦労の後、これは私の問題を解決します。ありがとう+1
フェデリコピアッツァ

0

ブレークポイントを削除するには

  1. クラスをjunitテストとしてデバッグする
  2. デバッガーが停止したら、「変数」と「式」の横にある「ブレークポイント」タブをクリックします。
  3. ブレークポイントタブの右上で、2つの「X」が付いたボタンをクリックします。
  4. テストを停止し、ブレークポイントを置き換えて、デバッガーを再度実行します

0

また、他の行のブレークポイントが機能するかどうかを確認します。デバッガのバグである可能性があります。Eclipseデバッガーで問題が発生しました。次の行にあるコードのブール代入にブレークポイントを設定しても機能しません。これをここ報告しましたが、前または次の行に配置すると機能しました。


0

何もうまくいかない場合

  1. そのリモート/ローカルデバッグ構成を削除し、新しいものを作成します。
  2. デバッグ構成でソースを追加します。

0

別の考えられる問題は、デバッガーポートがファイアウォールによってブロックされている可能性があることです。たとえば、mule anypoint studio(v 5.4.3)を使用していました。デフォルトのデバッガポートは6666です。フローが実行されても、フローはブレークポイントで停止しません。ポートを別のポート(8099など)に変更すると、問題なく動作しました。


0

に移動しRight click->Debug Configuration、作成されたデバッグインスタンスが多すぎるかどうかを確認します。私の問題は、構成から複数のデバッグインスタンスを削除し、新たにデバッグを開始したときに解決されました。


0

あなたがEclipseを使っているなら、

「パッケージエクスプローラー」の下のプロジェクトフォルダーを右クリックします。

ソースに移動->クリーンアップしてプロジェクトを選択します。

これで混乱が解消され、ブレークポイントが機能するようになります。



0

私の場合、同じワークスペースに複数のプロジェクトがありました。デバッグしようとしたJavaファイルが、同じパッケージの複数のプロジェクトに存在しました。

他のプロジェクトは必要なかったので、関係のないプロジェクトを閉じました(または関係のないプロジェクトからファイルを削除しました)。


0

Vineet Reynoldsの回答に関するもう1つのコメント。

私は設定していたことが判明-XX:+UseParallelGCeclipse.ini

仮想マシン(vm)の引数を次のように設定しました

-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M

それで問題は解決しました。


-2

これは私にとってうまくいくものです:

次のように、ローカルサーバーアドレスをPHPサーバー構成に配置する必要がありました。

ここに画像の説明を入力してください

:そのアドレスは、Apache .confファイルで構成するアドレスです。

:機能していたブレークポイントは「最初の行でブレーク」のみでしたが、その後、ブレークポイントは機能しませんでした。

php.iniファイルのxdebugプロパティを確認し、不要と思われるものを削除してください。


1
私は、これは(JUnitのとJavaデバッグについて)質問に答える方法を確認するために失敗する
Newtopian
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.