• 締切済み

eclipse、javaでデバッグするとき

eclipse、javaでデバッグするとき visual studioのようにマウスでカーソルを任意の行へ移動して 処理を続行するような機能がないようです、あるとすごく便利 なのですが、仕方ないのでeclipse のときはたとえば if( func1() != null ) などどとあった場合 if がtrueの場合をデバッグしたい場合 func1の中ステップインしてreturn trueとなるように変数の書き換えで行います。 かなり骨の折れる作業なのですがこれがVSのようにマウスのドラッグでできると 助かります。ぜひ便利な方法がありましたらよろしくお願いします。 また、return func() などの場合 ここでfuncに入らずにreturn値を任意に設定 する方法はないでしょうか? 以上よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

VisualStudioの機能は知らないけど Eclipseでのデバッグでは ブレイクポイントで止まっている最中、 変数VIEWに表示されている変数に対して 好きな値に変更できるわよ。

vfrtgb
質問者

補足

askaaska様 そうなんです、変数ビューでかえるのですが、 return func1() func1(){ return func2() } みたいなのがありまして、func2まではいって書き換えないと目的を達成できないのと 戻り値が複雑なクラス型だとどこをいじったら変わるのかさっぱりなんてのがありした。 のでたとえば、 if () if () if () みたいな条件分岐を中に入ってデバッグしたいときに結果がtrueになるように3つの条件式を 書き換えるわけですが、それがかなり骨が折れるのですが、、、、 VSだとほんとブレークで止まったところのカーソルをマウスでドラッグして持っていっておしまいです、 VC6でも昔はプログラムポインタを直接いじることでできたと思います。 やはりeclipseではそれしか方法がないのでしょうか?

関連するQ&A

  • visual studio 2008 のデバッグでステップバックする方法はありますか?

    ブレークポイントを設定して止まらせた後にステップインで進みますが、うっかり押し過ぎた場合、デバッグし直すしかないでしょうか? 前のステップに戻る、いわゆる”ステップバック”する方法はありますか? ほかにVS2008のデバッグに関する便利な技がありましたら是非教えてください。

  • 関数の引数に未定義の変数を渡すとエラーが出る

    自作の関数で、issetとemptyを一緒に判定する関数を作っているのですがエラーが出ます。 ある変数が「未定義」または「null」または「""(空白)」の場合はnullである、という関数を作りたいです。 ------------------------------------------ function is_null_ex($value){  if (!isset($value)) {return true;}               // 未定義かnullの場合、trueを返す  else if (strlen(strval($value)) === 0) {return true;}   // 空白の場合はtrueを返す  else {return false;}                      // $valueに値が入っている場合はfalseを返す } is_null_ex($val); ------------------------------------------ 上記の関数で$valueが未定義の場合にfuncを使うと、次のようなエラーが出ます。 Notice: Undefined variable: val つまり、未定義の変数を引数に渡すとエラーが出ます。 「未定義なら関数に渡さなければ?」と思うかもしれませんが、そもそもこの関数は「未定義」または「null」または「""(空白)」を判定したい関数なのです。 この場合、どうすれば良いのでしょうか? エラーは出ますが上記の関数で「if (!isset($value)) {return true;}」の部分できちんと判定はされています。 PHP5.3系で運用しています。 ぞうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • Javaでのデバッグコード削除

    Javaで条件分岐などによってコード自体を削除することはできるのでしょうか。 目的はデバッグコードの負荷軽減です。 C言語でいうところの、プリプロセッサのようなことができることが理想です。 例えば、メソッド中に以下のようなコードがあるとします。 ------------------------------------ final boolean DEBUG = true; if (DEBUG) System.out.println("Debug: hogehoge"); ------------------------------------ 上の場合はif文条件分岐の処理負荷が発生すると思います。 この程度であれば低負荷であることは認識していますが、どうも気持ちが悪いです。 例えば、C言語であれば以下のようにしてコンパイル時にコードごと削除することができると思います。 ------------------------------------- #define DEBUG int main(){ #ifdef DEBUG    printf("Debug: hogehoge"); #endif return 0; } ------------------------------------- Javaで上記のようなことを実現することは可能でしょうか。 デバッグコードの削除が目的ですので、仮にこれができなかったとしてもIDEやそのプラグインなどで目的が達せられれば問題ありません。 どなたか解決策をご存知であればご教示願います。

  • PHPEclipseを使ってデバッグするには?

    WindowsXP上でPHPの開発環境を作ろうと思っています。 開発ツールはEclipseのプラグインであるPHPeclipseが便利そうなのでこれで行こうと思います。 その為に以下の手順で開発環境を整えたのですが、PHPのデバッガがうまく動きません。 ブレークポイントを設定してもスルーしてしまいます。 設定手順 ・XAMPP for Windows 1.5.3aをインストール ・php-switch.batによりPHP4(PHP4.4.2-pl1)に変更 ・jdk-1_5_0_08-windows-i586をインストール ・All-In-One Eclipseをインストール(Eclipse 3.2.0) ・PHPeclipse 1.1.8をインストール ・php_db.dll-4.4.2をphp_db.dllに改名しphp.iniで設定されたextension_dirにコピー。 ・xampp\apach\bin\php.iniを変更。   implicit_flush = On   [debugger]   extension=php_dbg.dll   debugger.enabled= true   debugger.profiler_enabled= tru   debugger.profiler_enabled = true   debugger.JIT_host = clienthost   debugger.JIT_port = 7869 ・pnp.iniをxampp\php下にコピー。 ・httpd.confにaliasをワークスペース下が"http://localhost/alias/プロジェクト名/phpファイル名"で参照できるように設定。 ・Eclipseの「ウィンドウ」→「設定」より"PHP External Tools"の各項目を設定 これで一応プロジェクトが作成でき、Eclipseの「実行」→「構成およびデバッグ」で表示されるダイアログで該当プロジェクトを選択し「デバッグ」ボタンを押すとブレークポイントで、止まらずそのまま最後まで実行してしまいます。 ブレークポイントで実行を止めてステップ実行しながらデバッグするにはどうしたら良いのでしょうか? なにか解りましたらアドバイスよろしくお願いいたします。

    • 締切済み
    • PHP
  • 関数から一気に抜ける

    お世話になります。 不適切なデータを送らないためのスクリプトを書いています。 <form onsubmit="return func1(this);"> (省略) </form> func1 (frm1){   if (frm1.elements[0]~~~) {     alert(msg0);     return false;   } (省略)   if (frm1.elements[99]~~~) {     alert(msg99);     return false;   }   return true; } このように書く代わりに func1 (frm1){   if (frm1.elements[0]~~~) {     exodus(msg0);   } (省略)   if (frm1.elements[99]~~~) {     exodus(msg99);   }   return true; } function exodus(msg) {   alert(msg);   xxxx false; } とかこんな風に書けたらいいなと思うのですが この「xxxx」に相当するような機能はJavaScriptにあるのでしょうか? よろしくお願いします。

  • onClickで関数呼出し後に、結果に応じてsubmitを実行する方法

    JavaScriptで、 function func() {  if (a==0) {   alert("処理しない");   return false;  }  return true; } と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。 そして、FORMタグで <FORM NAME="FormName" ACTION="next.html"> <INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();"> </FORM> と記述しています。 要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに 遷移させたいのですが、上記記述では、遷移しません・・・ onClick部分にonClick="return func(),submit();"と記述した場合、 func関数の実行結果がtrueでもfalseでも遷移してしまいます。 そこで、なんとなくonClick="return func()&&submit();"と記述してみたところ、 func関数がtrueの時のみうまく遷移するようになりました。 これは偶然そう動作しているのでしょうか、それとも上記は正しい記述方法なのでしょうか? 正しい記述方法ならいいのですが、上記以外に正式な記述方法があれば 教えていただけないでしょうか? ※TYPE="submit"にすればいいとは思うのですが、buttonで実現したいと 考えております。

  • Excel VBA ループ処理のデバッグについて

    Excel VBAで、for文のループについて。 for i=1 to maxNum (処理) next i というような場合。F8キーとかでステップインしデバッグしながらテストしてみます。maxNumが5万くらいとして、とりあえず1万くらいまでは一気にiの値を進めてから止めて、様子を見てみようという場合、どうすればよいでしょうか。 if i=10000 then とか、前もってコードに書いて置く以外の手段でお願いします。なぜなら10000のときだけ処理を止めると限定するのではなく、30000のときとか49997のとき止めるとか、その時その時で色々と試してみたいからです。

  • 判定の仕方

    みなさんifなどの false(FALSE) 0 NULL "" などをtureとするとき、判定分をどう書きますか? 私はreturn値を明示するために if($val === false) //true if($val === 0) //true if($val === NULL) //true if($val === "") //true とします。 スマートなのは if(!$val) //true なんですけど、複合型を返す関数の判定は気持ち悪くて使ってないです。 複合型の判定は if(empty($val)) //true としてます。 みなさんはどっちをつかいますか? また、 if($val == false) //true と書いたりしますか? C育ちの私にとってはとても気持ち悪くて絶対に書かないだろう判定の仕方なんですけど、なにかメリットなどがあったら教えてください。

    • ベストアンサー
    • PHP
  • C# ref引数のnull判定

    C# ref引数のnull判定 こんにちは。 以下のような関数なのですが、 void func(ref uint arg) { ・・・・・ } argがnullかどうかを判断するにはどうすればよいのでしょうか? プラグインを作成していまして、funcは既存のインターフェースの実装なのですが、呼び出し側でargにnullを入れるケースがあり、判断する方法がわからすに困っています。 試しに if( arg != null ) { .... } としてみましたが、「型'uint'の値が型'uint?'の'null'に等しくなることはないので、式の結果は常に'true'になります。」 というwarningが出てしまい、判定できませんでした。

  • PeekMessageについて

    確認したいのですが、 MSG msg; while(TRUE) { if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { if(msg.message==WM_QUIT) { return (int) msg.wParam; } TranslateMessage(&msg); DispatchMessage(&msg); } else { } } このPeekMessageというものですがキューに溜めているということでいいのでしょうか。 後、 MSG msg; while(TRUE) { if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { if(!GetMessage(&msg,NULL,0,0)) { return (int) msg.wParam; } if(msg.message==WM_QUIT) { return (int) msg.wParam; } TranslateMessage(&msg); DispatchMessage(&msg); } else { } } の if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { if(!GetMessage(&msg,NULL,0,0)) { return (int) msg.wParam; } はキューから出してGetMessageは待機してるということでいいのでしょか? if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) { if(!GetMessage(&msg,NULL,0,0)) { return (int) msg.wParam; } これはキューの中は出さないで、GetMessageでPeekMessageからのキューを出しているということでいいのでしょか?

専門家に質問してみよう