プロが教える店舗&オフィスのセキュリティ対策術

変数の値の変化を調べるためにGDBデバッガを使っています。現在は、breakでポイントを設定して、disp iで表示する変数を決めてstepで一行ずつ手動で実行しています。 しかし、これを手動でやらなくてももっと簡単にできるのではないかという意見がでたので、自分でいろいろ調べてみたんですがなかなか見つかりませんでした。 変数の値が変化した時に停止とかならあるんですが、そうではなく変数の値が変化したら表示するみたいなことってできないでしょうか。
今は一行ずつstepでi=1、i=2・・・な感じで見ていますが、例えばrunで実行したらすぐにi=1、i=2・・・が全て表示されるようにできないでしょうか。分かりにくい気がしますが、よろしくお願いします。

A 回答 (7件)

XPだと2.3じゃないと動かないと思いますが、動きましたか?


うーん。侮れないなXPの互換性。

>2.3はなぜかファイルが開けないとか出てむりだったので
あれ?
それはマクロ版を起動しませんでしたか?ttpmacro.exeって名前のやつは違います。まず普通にTeraTermPro(ttpmacro,exe)を起動してください。
で、ファイルメニューのNew Connectionを選んで、TCP/IPのホスト名を入れます。でポート番号が合っていることを確認してOKを押してください。
SSHでログインが暗号化されていなければ接続できるはずです。puttyを使っていたので暗号化されてるんじゃないかという不安はありますが。
もしSSHで暗号化されたら下記のTeraTermProを使ってみてください。
http://sourceforge.jp/projects/ttssh2/

この回答への補足

あーすいません、2.3はsetup押してインストールするところで、ファイルが開けないと出てインストール無理でした。 1.4と今教えていただいたものは試しましたが、ホスト名とパスワード入れても繋がりません。。。 学校なんでなんか制限があるのかもしれません。

補足日時:2007/11/30 18:15
    • good
    • 0

>Type <return> to continue, or q <return> to quit


プログラムが終了したんで出たのだと思います。
条件判断でコントロールできないので仕方ないかなと。

もし状況を見て制御を変えたければ、puttyの代わりにTeraTermProを使うとマクロ制御で動作を変えることが出来ます。
http://hp.vector.co.jp/authors/VA002416/
マクロのマニュアル
http://www.ne.jp/asahi/hishidama/home/tool/tterm …
GDBから返されるメッセージで入力するコマンドを変えることが可能です。

この回答への補足

いろいろありがとうございます。 一応インストールしてみたんですが、2.3はなぜかファイルが開けないとか出てむりだったので1.4をやってみました。しかし、IDとパスワード入れても入れませんでした。2.3じゃないと駄目なんですかね・・・。

補足日時:2007/11/30 16:20
    • good
    • 0

サクラエディタですか?


そうすると直接ネットワークでFreeBSDのディレクトリが見えていて、C言語のファイルを編集してることになります。
だったら、ソースと同じ場所にコマンドファイルをサクラエディタで作るだけですよ。

この回答への補足

今やってみました。昨日はなぜかテキストファイルで作っていたのでうまくいかなかったようです。 stepやnextをたくさん書いてみましたが、ある程度進むとType <return> to continue, or q <return> to quitっと入力を求められるんですが、これは仕方ないんですかね。。

補足日時:2007/11/30 12:16
    • good
    • 0

putty経由でエディタを起動すれば、ファイルを作成編集できますよ。


エディタのviとかemacsとかを使います。
そもそも、Cソースは何で編集してるんでしょうか?
コンパイルもFreeBSD上でputtyから操作してるんですよね。

エディタvi
http://www.linux.or.jp/JF/JFdocs/vi-user-usage.h …
エディタemacs
http://www.linux.or.jp/JF/JFdocs/Emacs-Beginner- …

この回答への補足

ああ、、、そうなんですか全然分かってなくて申し訳ないです。
エディタはサクラエディタで書いてます。それでputty起動して、gccでコンパイルしています。一度putty経由で起動できるかやってみます。

補足日時:2007/11/29 18:53
    • good
    • 0

>解答ありがとうございます。

 そうですようはステップ実行を自動で行いたいのです。 んーなかなか難しそうですね・・・まだまだパソコンにもそんなに詳しいわけではないので。
そうそう。思い出しましたコマンドファイルを使えば、それに近いことが出来ますね。
サーバ側でファイルにコマンドだけを打ち込んだファイルを作ります。
例えば"cmd"というファイル名にします。中身は、
next
next
next
とかコマンドを沢山書いておきます。
ようはコマンドを自動的に入力してくれる仕組みを利用して実行を自動化するわけなんですが、
GDB実行中に
source cmd
と書くとnextが次々に自動入力されます。
任意のところで止めるのは難しいですが、実行してdispで変数を状態を追いかけるだけなら使えるんじゃないでしょか。

>よく考えたら、コンパイルやデバッガを使うときはXPではなく、puttyというフリーソフト?を使って別の計算機サーバにアクセスしてました。FreeBSDって書いてあります。んーUNIXなのかな・・・よくわからないですが。。
puttyはターミナルソフトで、サーバ側の情報を表示しているだけですね。
FreeBSDはUNIX互換のOSです。FreeBSDが入っていることはMACとかIntel系じゃないCPUですかね?

この回答への補足

何度もありがとうございます。
テキストファイル等でnextとたくさん書いたファイルcmdを作るというのとは違いますよね。 確かに自動入力してくれればいけるかもしれません。

一応外の表示ではDELL intel pentium4 ってなってますね。自分のパソコンはintelでXPなのですが、部屋には他にいくつか計算機サーバ(DELL intel pentium4 FreeBSD)がありまして、そちらで動かしているのではないかと思うのですが。

多分そのFreeBSDの方で作成するんですよね、確かに隣にあるキーボードでいじれそうですが、先生が使ってるのを見たくらいであまり分からない感じです。

補足日時:2007/11/29 11:36
    • good
    • 0

GDBでXPですか?


cygwinかMinGWでしょうか?

やっと分かりました。ステップ実行を自動で行いたいのですね。
emacsのマクロで組めば可能かなとは思いますが。
何か出来たような気が・・・。う~ん思い出せない。

変数の変化のブレークポイントは、watchコマンドを使います。
http://rat.cis.k.hosei.ac.jp/article/devel/debug …
cygwinがハードウェアレベルの高速なwatchをサポートしているかは不明です。

この回答への補足

解答ありがとうございます。 そうですようはステップ実行を自動で行いたいのです。 んーなかなか難しそうですね・・・まだまだパソコンにもそんなに詳しいわけではないので。

よく考えたら、コンパイルやデバッガを使うときはXPではなく、puttyというフリーソフト?を使って別の計算機サーバにアクセスしてました。FreeBSDって書いてあります。んーUNIXなのかな・・・よくわからないですが。。。

補足日時:2007/11/28 21:53
    • good
    • 0

これです。


http://flex.ee.uec.ac.jp/texi/gdb-j/gdb-j_42.html
ただ、GUIでラップしてくれるDDDなどを使うともっと楽に利用できるようになります。Xwindowが必要ですけど。

CPUが何なのか不明ですが、
>変数の値が変化したら表示
CPU(ハード)がサポートしていないと、とんでもなく遅くなりますよ。
1STEPづつ実行して変数の値に変化がないかGDBが検査することになりますので。

この回答への補足

解答ありがとうございます。そのページは前に見たことがあるのですが、上の方のことでしょうか。
下はdisp機能とかの説明ですよね。遅くなるとかは全然構わないのですが。。。

CPUはインテル、OSはXPです

補足日時:2007/11/28 17:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!