• 締切済み

VC++による変数の中身の表示についての質問.

現在,VC++ver6.0を用いてソースを書いています. 時折,変数の中身にちゃんと値が入っているか チェックしたいときがあります. そこで,変数の中身のチェックの方法をご存知の 方がおりましたらアドバイス頂きたいです. 自分で調べた方法としては,クイックウオッチウインドウの 使用が挙げられるのですが,使いかたがよく分かりません. なお,私が変数を表示させているやり方は, 以下の通りです. #define ERROR 1 char ch[20]; int data; sprintf(ch,"%d",data); AfxMessageBox(ch); exit(ERROR); 以上,宜しくお願いします!

みんなの回答

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

デバッグにてブレークポイントを張り、ブレークする方法はわかりますか? ソース上で止めたい場所にカーソルをもっていき「手」のアイコンを押すとプログラム実行中にそこで止まります。そのときにマウスカーソルを変数の上にもっていくと変数の中身が表示されますし、変数を選択してマウスの右ボタンでクイックウォッチに追加することが出来ます。 クイックウォッチは実行を中断(ブレーク)しているときにその状態での変数の中を表示する物です。 実行を中断せずに変数の中を確認したい場合、TRACEという行をソース上に追加します。使い方は printfとおなじような感じです。 TRACE("変数 a = %d\n", a); 結果はデバッグウィンドウに表示されます。 リリースモードでコンパイルすればこの TRACEコマンドは無視されます。

taroimoten
質問者

お礼

早速の御返答ありがとうございます. ブレークポイントを張るための「手」のアイコンを見つけました. #ビルドミニバーにあるやつですね? なんとか試してみます.TRACEの方法は,すごく参考になります! 今後ともよろしくおねがいします. では~.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VC++2010のデバッグ中の変数表示について

    私はいま、高校の課題研究でvc++2010でソフトの製作をしています。 原因のわからないエラーの理由を探るため、よく理解もしていないデバックのブレークポイントを駆使して変数の中身を見て回っているのですが、時折「自動変数」の欄にも「ローカル変数」の欄にも表示されない変数があります。 あれは、どういった理由で表示されないのでしょうか。 ソースすべては長いので載せませんが、問題の部分だけ載せておきます。 char *p; char *result; p = (char*)System::Runtime::InteropServices::Marshal:: StringToHGlobalAnsi(data[i]).ToPointer(); //Mecabインスタンスの作成 MeCab::Tagger *tagger = MeCab::createTagger (""); result = (char*)tagger->parse(p); //←形態素解析されたデータを格納しているのですが、エラーが起こるような処理ではないと思います。 delete tagger; System::Runtime::InteropServices::Marshal::FreeHGlobal(IntPtr(p)); String^ SResult = gcnew String(result); //←ここで「ハンドルされていない例外」が入り、デバックが中断されます MessageBox::Show(SResult); resultの中身を見たいのですが、表示されません。 ソースのコメント分のあたりにブレークポイントを入れたときには、*pに正常に値が入っていることが確認できました。 例外が発生したときのメッセージウィンドウの表記 「'System.AccessViolationException' のハンドルされていない例外が guiapp.exe で発生しました。 追加情報: 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。」 よくばりですが、例外が発生した原因についても気が付くことがありましたら指摘してください。 わかりづらい文章で申し訳ないですが、よろしくお願いします。

  • VC++2010 MFC エディットボックスの質問

    VC++2010 MFC エディットボックスの質問なんですが、 バリュー型変数を使わないでどうやったら配列(char型8byte(unsigned char[8]))の中身すべてをエディットボックスにいれて表示することができますか?よろしくお願いします。配列の中身は文字もあったりします

  • VC++でのプログラム実行中に変数の数値を確認する方法

    VC++でのプログラム実行中に変数の数値を確認する方法 VC++でプログラムを実行している間に、変数の中の数値がどのように変化するかを表示させるためにはどのような機能があるのでしょうか? 思いつくのは次の2つなのですが、具体的な方法が分かりません。 ご存知方がいたら教えてください。 ?ソースの中に特定の表示名令文を書いておく ?VC++の機能を使って変数の中身を表示させる

  • #define 文で可変個のパラメータを引き渡す方法は有りますか

     下記のように printf() を sprintf() に置換える実験をしています。 #define printf( Param )  sprintf(str, Param )  上記の方法では、Param 部分が可変個の変数では上手く行きません。  次の方法ではエラーになります。 #define printf( Param,... )  sprintf(str, Param,... ) #define printf( (Param) )  sprintf(str, (Param) )  #define 文で可変個のパラメータを引き渡す方法は有りますか?

  • perlのcgiで、変数の中身を表示させたい

    cgiで変数の中身を表示させたい perlのcgiで変数の中身を表示させたいのですが、うまくいきません ▽環境   レンタルサーバ ▽やりたいこと   通常のブラウザ画面に、変数の中身を表示させたい ▽現状   use Data::Dumper;   print Dumper($hoge));もしくは、warn Dumper $hoge;   とすると、下記エラーとなります Script Error The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file. 指示に従い、.htaccessへ、AddHandler cgi-script-debug .cgiを追記すると、ズラズラ出てきたと何か出てきた中の一行に、変数の中身が表示されます ■質問事項   ▼変数の中身を確認する際、いちいち.htaccessへ追記するのが面倒なのですが、どうやって回避するのでしょうか?   ▼なぜ、変数の中身を確認しようとしただけで、Script Errorとなるのでしょうか?   ・書き方を間違えている?   ・書く場所を間違えている?   ・レンタルサーバの仕様?   ・perlのcgiだから? イメージしてるのは、PHPのvar_dumpなのですが…

    • ベストアンサー
    • Perl
  • VC++2005でLAPACKを使用するとエラーが出る

    タイトルの通りなのですが,VC++2005でLAPACKを使用するとエラーが出て,困っています. vc\include\clapack.h(1486) : error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。 vc\include\clapack.h(1486) : error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。 vc\include\clapack.h(1486) : warning C4091: '' : 変数が何も宣言されていないときは、'char' の左辺を無視します。 vc\include\clapack.h(1486) : error C2143: 構文エラー : ';' が ',' の前にありません。 vc\include\clapack.h(1486) : error C2059: 構文エラー : ',' vc\include\clapack.h(1486) : error C2059: 構文エラー : ')' vc\include\clapack.h(2861) : error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。 vc\include\clapack.h(2861) : error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。 vc\include\clapack.h(2861) : warning C4091: '' : 変数が何も宣言されていないときは、'char' の左辺を無視します。 vc\include\clapack.h(2861) : error C2143: 構文エラー : ';' が ',' の前にありません。 vc\include\clapack.h(2861) : error C2059: 構文エラー : ',' vc\include\clapack.h(2861) : error C2059: 構文エラー : ')' 主にhttp://sakura.math.kyushu-u.ac.jp/wiki/index.php?%E8%A8%88%E7%AE%97%E6%A9%9F%E8%A8%AD%E5%AE%9A%2FCLAPACKを参考にして作成しているのですが・・・上手くいきません.詳しい方,ご教授お願い致します.

  • 変数の中身をデータベースに登録

    Accessで変数の中身をテーブルに登録する方法は以下のとおりで可能だと思いますが、 ​http://oshiete.nikkeibp.co.jp/kotaeru.php3?q=2360461​ この場合、変数(この場合、TEXT1等)の中身に半角括弧"("が入るとクエリーエラーとなってしまいます。 どなたか解決法をご教授ください

  • VC2005のDLLを6.0で呼び出すには

    VC 2005 Pro Editionで作ったライブラリ(ヘッダ、lib、dll)を頂きました。    頂いたDLLの形式は定義ファイル.defを使わない形式、declspec(dllexport)を使う形式の方です。  呼び出し側はVC6.0EnterPrize(SDK)を使います。 (諸事情により6.0以上にUPすることは不可能)     まず、静的リンクをし、関数を呼び出してみました。  (設定のリンクよりlibをリンクさせ、ヘッダをインクルードして)  すると以下のメッセージが出てしまいます。 リンク中... Dialog1.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) void __cdecl Init(unsigned char *,unsigned char *,unsigned char *,unsigned char *)" (__imp_?Init_Card@@YAXPAE000@Z)" は未解決です Debug/CardMake.exe : fatal error LNK1120: 外部参照 1 が未解決です 。 link.exe の実行エラー    色々やってみましたが、このエラーから回避できませんでした。  ヘッダ自体に #ifdef _USRDLL #define DLL_PORT __declspec(dllexport) #else #define DLL_PORT __declspec(dllimport) #endif    の宣言があるので、別に特別なことをしなくても、大丈夫そうなのですが、何故か出来ません。  次に動的リンクを行っていました。  するとLoadLibraryでエラーになり、GetLastErrrorで14001(エラーメッセージはつかめず)が返ってきました。 (色々調べたところ定義ファイルがないと動的リンクはできないようですね)    というわけでにっちもさっちも行かなくなった状況です。  そこでご質問です。 (1)定義ファイルを使わない形式のライブラリ(暗示的に定義されているもの)はどのように呼び出させばよいでしょうか? (2)2005のライブラリを6.0から呼び出すことは可能ですか?  また呼び出す方法は?  すいませんがご回答をお願いします。

  • VC++2010を覚えたい(極めたいではない)

     ExcelVBAで実験データを整理していますが、Excelのみでしか使えない等の問題からVC++2010をそこそこ使えるようになりたいのです(極めようとまでは思っていません)。先日もここで質問させていただいたのですが、メッセージボックスを出したりファイル操作をしようとすると、知識不足のためコードが正しく書けずエラーばかり出て格闘しています(VBAだと、msgbox"こう書けば表示される" の一行で済むことをやるのに、かなり格闘します)。  そこで、これら基本動作を完全に使いこなせるようにするために勉強をしたいのですが、何について勉強すればいいのかよくわかりません。どんな本を買って何を勉強すべきでしょうか?いい本があったら教えてください。特にできるようになりたいことを下に書きます。 1 #include <stdio.h>とかのインクルードファイルを宣言する位置。 2 intやdouble等の変数宣言も、たまにエラーでできないことがある。   関数内では変数宣言の方法が違うのかな?   String^ でどうして^がついたりつかなかったりするかわからない。   これでエラーとかよく出ます。^は大嫌い>< 3 メッセージボックスとかの表示。messageboxの前や後ろにshowとか::とかどうして必要か   わからない。メッセージボックスに確認する変数の数値を出すのも難しい。 4 データファイルをいろいろ操作したい。データファイルはテキストデータのみ 5 グラフもVC++で書けるとうれしい。必要があるときだけでいい。 forやif等の制御構造、配列、ポインタ等はもう知っています。 これらができるようなるには、「クラス」とかを勉強するとわかるのでしょうか? クラスが何のことだかもわかりませんが。

  • binファイルが軽くなる変数への代入処理について

    変数に値を代入する方法はいろいろあるかと思いますが、 コンパイル後に最もバイナリファイルが軽くなる処理はどのような処理でしょうか。 例として、1000バイトのデータを変数に代入する際、 (1)直接一つずつ代入する。 data[0] = 0x00; data[1] = 0x00; ・・・ data[999] = 0x00 (2)変数の定義時に代入(初期化)を行う。 unsigned char data[1000] = {0x00,0x00,・・・・0x00} 等ありますが、どちらの処理が有効でしょうか。 また、その他有効な処理方法等がありましたら、ご教授願います。 グローバル変数として定義するか、かローカル変数として定義するか、 defineで代入値を持つ等、定義時の方法でも違いがありましたら、 教えて頂けると助かります。

このQ&Aのポイント
  • スマホを変えたらアプリからプリントできない問題について解決方法を教えてください。
  • MFC-J738Dでスマホからプリントする際にオフラインになる問題が発生しています。
  • 無線LAN接続で使用しているバッファローのWi-Fiルーターに問題があるのか、設定が必要なのか教えてください。
回答を見る

専門家に質問してみよう