VisualStudio2005で中断した際の変数参照値がおかしい。
お世話になります。ちょっと言葉がみつからなくて、説明がめちゃくちゃになってしまいそうですが、よろしくお願いします。
現在、VS2005でC++の開発を行っているのですが、あまり深い開発をしたことが無く、VSの環境設定や機能などをいじったことが一度もありません。そのせいなのかは分かりませんが、ソースの流れを追う為に、ブレークポイントで中断して、変数の値を参照できる機能で(この機能をどう呼ぶのかも知りません)、変数の中身をチェックしていたのですが、どうにも参照できた値がおかしいのです。
例えば、
int i=0;
int j=0;
for(i=0;i<5;i++){
j++; //ここでブレーク
}
という簡単なソースを実行させます。そしてiとjの値を参照すると、中身が「i:40196」「j:40265」という感じになってしまいます。ポインタか何かの値になってしまっているのかと思ったのですが、それらしきものも見当たりません。ちなみにループはちゃんと回数分回ります。
ほかにも、変数そのものが参照できなかったり、ソースそのものはちゃんと動作しているのに、値が「不適切です」になっていたり……。
これはVS2005の環境設定ミスなのでしょうか。それとも私が根本的に間違っているのでしょうか。動作しないならまだいいのですが、正常に動いてしまうから混乱しています。
分かりづらい文章ですが、よろしくお願いします。
No.5ベストアンサー
- 回答日時:
Debug|Win32のコンフィグが変ですね。
大半のパラメータが出ていません。画像を添えますので同じか確認してみてください。
直りました! すばらしい!
なるほど。やはり環境設定だったのですね。うーん。ツールの設定くらい、ちゃんと覚えたほうがいいですね。結局は今回、何をしたのかよくわからないです。いつ設定いじったのかも覚えていない始末……。ですがいい薬になりました! もっと設定をいじり倒して、覚えていきたいと思います。
何から何まで丁寧に教えてくださってありがとうございました!
No.4
- 回答日時:
異常な値が出るコンパクトな再現コードの用意とvcprojファイルをメモ帳で開いたテキストコードを見せてもらって良いですか?
こちらでのWin32コンソールで新規に作った場合のvcprojのConfigurationsを参考にみせますね。
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
この回答への補足
なんだかすごいお手間をおかけしてすみません;;
■proj
<?xml version="1.0" encoding="shift_jis"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="testproj"
ProjectGUID="{省略}"
>
<Platforms><PlatformName="Win32"/></Platforms>
<ToolFiles></ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<ToolName="VCPreBuildEventTool"/>
<ToolName="VCCustomBuildTool"/>
<ToolName="VCXMLDataGeneratorTool"/>
<ToolName="VCWebServiceProxyGeneratorTool"/>
<ToolName="VCMIDLTool"/>
<Tool
Name="VCCLCompilerTool"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<ToolName="VCManagedResourceCompilerTool"/>
<ToolName="VCResourceCompilerTool"/>
<ToolName="VCPreLinkEventTool"/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
/>
<ToolName="VCALinkTool"/>
<ToolName="VCManifestTool"/>
<ToolName="VCXDCMakeTool"/>
<ToolName="VCBscMakeTool"/>
<ToolName="VCFxCopTool"/>
<ToolName="VCAppVerifierTool"/>
<ToolName="VCWebDeploymentTool"/>
<ToolName="VCPostBuildEventTool"/>
</Configuration>
</Configurations>
■ソース
int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow){
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
DWORD i,j;
MSG msg; HWND hWnd;
WNDCLASSEX wcex={sizeof(WNDCLASSEX),CS_HREDRAW|CS_VREDRAW,WndProc,0,0,hInstance,NULL,NULL,(HBRUSH)(COLOR_WINDOW+1),NULL,(_TCHAR*)gName,NULL};
if(!RegisterClassEx(&wcex))
return 0;
DWORD WndStyle WS_OVERLAPPEDWINDOW&~(WS_MAXIMIZEBOX|WS_SIZEBOX);
RECT WndRect={0,0,600,600};
AdjustWindowRect(&WndRect,WndStyle,false);
if(!(hWnd=CreateWindow(gName,gName,WndStyle,CW_USEDEFAULT,0,WndRect.right-WndRect.left,WndRect.bottom-WndRect.top,NULL,NULL,hInstance,NULL)))
return 0;
ShowWindow(hWnd,SW_SHOW);
do{
if(GetAsyncKeyState(VK_ESCAPE))
PostQuitMessage(0);
i++;
j++;
}while(msg.message!=WM_QUIT);
return 0;
}
ソースは無理がありました。手掛かりにはならないかもです。
No.3
- 回答日時:
・新規のプロジェクトを作っても同じ問題がありますか?
・どのプロジェクトで作業していますか?
どうにも分かりませんので、そこの問題に至るまので新規作成から、デバッグ実行までの手順を書いてください。
この回答への補足
何度も申し訳ないです。
手順としては、
・「ファイル」⇒「新規作成」⇒「プロジェクト」⇒「空のプロジェクト」⇒作成
・ボーンプログラムをプロジェクトに参加させる
・一度実行して空のウインドウが表示されるか確認する
・中に処理を書き込む
・動作確認がしたいのでブレークして変数を見たら、おかしいことに気が付く
といった感じでした。
これといっておかしなことはしていないつもりなのですが……。
>新規のプロジェクトを作っても同じ問題がありますか?
試しに新規でWin32プロジェクトを作成してみたのですが、変数などの代入は問題なく参照できるのですが、一部、ポインタやマクロの数値が取れないみたいです。
動作に問題はないので、問題ないと言えば問題ないのですが……なんだか気持ちが悪くて仕方がないです。参照できないのでウォッチリストに正しい値が入らず、作業効率がどうにも悪いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル開いたらウィンドウがでました 2 2023/03/28 16:24
- ネットワーク しばらくするとネットワークの参照ができなくなる 4 2023/06/17 16:56
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) Excel 参照元の値を参照したい 1 2022/08/20 18:58
- C言語・C++・C# 変数の初期化について 5 2022/10/02 08:55
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Visual Basic(VBA) VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。 6 2023/06/25 11:37
- その他(プログラミング・Web制作) Microsoft Forms とか、それに似たツールで計算をすることはできないか? 2 2023/01/14 11:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
PL/SQLでのTO_DATEの時間取得に...
-
変数名の取得
-
シーケンサで最小値を保持する
-
textboxとLabelを動的に変更する
-
OpenCVにおいてのYCrCb値の求め方
-
VB初心者。小数点以下の表示で...
-
変数に代入してある数値を表示...
-
Excel VBAのリストボックスの値...
-
ハッシュテーブル(連想配列)が...
-
範囲が指定されている乱数について
-
VBAのIF分で値を入れる場合
-
Webbrowser.innerHTMLの「oncha...
-
ASPの変数の値をJAVA Script内...
-
vb6のVSFlexGridで選択行、列の...
-
[VBA]選択範囲の下から上に処理...
-
Excel vba ユーザーフォームテ...
-
Excel VBA 複数選択したリスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのvalueとtext...
-
ハッシュテーブル(連想配列)が...
-
マクロ 特定のセル値のみクリ...
-
VB.NETでコンボボックスの1行目...
-
変数名の取得
-
値を返さないコード パス
-
Powershellのparamについて
-
power BI クエリエディター 〇...
-
PysimpleGUIでデータベースを作る
-
DataTableに対するLINQについて
-
Excel VBAのリストボックスの値...
-
VB初心者。小数点以下の表示で...
-
Excel VBA 複数選択したリスト...
-
ダブルクリックをした順番に数...
-
PL/SQLでのTO_DATEの時間取得に...
-
[VB.net] DataGridViewのコンボ...
-
マクロで奇数と偶数の値を2か所...
-
ASPの変数の値をJAVA Script内...
-
vb6のVSFlexGridで選択行、列の...
-
シーケンサで最小値を保持する
おすすめ情報