自宅PCのVisual Studioでデバッグ時にエラーが発生する問題

このQ&Aのポイント
  • 自宅PCのVisual StudioでC++ MFCアプリをデバッグする際にエラーが発生する問題について質問です。
  • 学校PCで問題なくデバッグできるC++ MFCアプリを自宅PCのVisual Studioでデバッグしようとすると、エラーメッセージが表示されます。
  • ソリューションのリビルドやプログラムのリビルドを試してもエラーは解消されず、デバッグ時のみ問題が発生します。
回答を見る
  • ベストアンサー

学校PCで問題なくデバッグできるのに自宅PCのくVisual Studioでは同じソースがデバッグできません。

学校PCで作成しているC++ MFCアプリを自宅PCでも修正できるよう同じくVisual Studioを買ったのですが、同じソリューション、同じソースなのに家PCでだけデバッグ時にエラーが出ます。 学校環境:デスクトップ Windows XP Pro SP2 Visual Stuidio 2005 Academic Edition 家環境:ノート Windows XP Pro SP2 Visual Stuidio 2005 Academic Edition (同じ) プロジェクトのディレクトリごとコピーし、ソリューションファイルを開いてデバッグすると以下のダイアログが出ます。 Debug Assertion Faild! Program: c:\プログラム名\debug\プログラム名.exe File:f:\rtm\vctools\vc7libs\ship\atlmfc\src\occcont\cpp Line:950 For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) 中止 再試行 無視 環境は同じはずですが…。家PCにFドライブはありません。学校PCには仮想ドライブとしてFはありますが何もマウントしていません。家PCのVC++で簡単なMFCアプリを作ると無事デバッグ出来ます。このままではVS買った意味がありません…。 「ソリューションのリビルド」「(プログラム名)のリビルド」してから「デバッグ」してもダイアログが発生します。両リビルド自体にはエラーはでません。デバッグ時のみ出ます。

  • kon_t
  • お礼率51% (17/33)

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

OLE関連のコントロールを使っていませんか? 学校PCではそのOLE関連がレジストリに登録されているが自宅PCでは登録されていないってことでは無いかと

kon_t
質問者

お礼

解決しました!!!! 4番の回答でそういえば…と思いあるソフトをインストールしたらデバッグが通りました!!! 実はIPカメラの制御ソフトを作成していたのですが、メーカーの純正ビューワーソフトをインストールしたところ成功しました。そのソフトはDirectXも絡んでいるようなので、DirectXを入れるだけでも解決するのかは未検証ですが、学校PCにはどれにもビューワーソフトを入れていたのが盲点でした。それにもっと早く気づき補足しておけばみなさんを悩ませずすんだかもしれません。 redfox63様、粘り強い的確なご回答ありがとうございました。

その他の回答 (4)

  • FAY
  • ベストアンサー率49% (95/193)
回答No.5

これ、OSあってますか? >家環境:ノート >Windows XP Pro SP2 >Visual Stuidio 2005 Academic Edition (同じ) 実際はWindows VistaでVista用のアップデートモジュールを あててないとかいうのじゃないですよね・・・

kon_t
質問者

補足

2の補足にVistaビジネスの記述をしたので混乱を招いたかもしれませんが、当初はXP SP2です。 一旦Vistaビジネスをクリーンインストールしましたが現在はまたXPに戻しました。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

アサートが起きた際に『再試行』をクリックすると VSのIDEに制御が移ります ここで 呼び出し履歴などでアプリケーションレベルまで戻ってどこから呼び出された命令が不具合を起こしているのか確認してみましょう 学校PCでMFCウィザードが吐いたスケルトンなら自宅PCでうまく動作するのであれば問題のプロジェクトの部品(コントロールなど)が原因のように思います 動的にコントロールを読み込むLoadLibraryなどを使っていませんか

kon_t
質問者

補足

>アサートが起きた際に『再試行』をクリックすると VSのIDEに制御が移ります とすると、「occcont.cpp」の ASSERT(IsWindow(pTemp->m_hWnd)); という記述の行にブレークポイントが指定されます。 そしてこの行をそのまま検索すると MSDNのページで「 Visual C++ 6.0 でコンパイルされた ActiveX コントロールが、Visual C++ 2005 で開発されたプロジェクトのダイアログ ボックスに埋め込まれると、プログラムが実行時にアサートする原因になる場合があります。このような場合、Visual C++ 2005 を使用して ActiveX コントロールをコンパイルし直します。アサートは、occcont.cpp ファイルのソース内の ASSERT(IsWindow(pTemp->m_hWnd)) 行で発生します。 」 というのが見つかりました。これかな?とは思います。 改めて、学校と家のVSのバージョンを確認しましたが同じようです。なのに家でだけ動かない…。MSDNに目を通しましたが、いまいち解決策が見つけられません…。エクスポートするみたいなウィザードがあれば嬉しいのですが。 >ActiveX コントロールをコンパイルし直します。 には、リビルドであってるような気がしますが動きません。 >呼び出し履歴などでアプリケーションレベルまで戻ってどこから~ 申し訳ないです。スキルがそこまで高くありません…。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

先生に確認してみましょう F:\rtm\vctools … とあるので何かライブラリーを使っているようですよ 作成したプロジェクトは VS2005標準のテンプレートからなのでしょうか? 先生がカスタムテンプレートを作成している可能性はありますよ または 使用しているコントロールに特殊な初期化処理が必要だとか ライブラリ(DLL等)のエラー処理がしっかりやっていないだとか

kon_t
質問者

補足

確かに、ソース(ソリューションファイルを含むディレクトリ)は前任者から別メディアからディレクトリごとコピーして引き継いだもので、1から自分で構築したものではありません。 学校PCは春にXP、VSをクリーンインストールして、適当なディレクトリに件のソースをD&Dで持ってきて修正しています。ここまでは何の問題も発生していません。なのでライブラリーを参照…という絡みの問題ではないような気がします。 追加情報ですが、学校にある別のPC(VSが入ってるノート)にUSBメモリでディレクトリをコピーしてデバッグしてみましたがこれは普通に通りました。 じゃあこの家PCが問題?と行き着きますが、XP入れなおし、VS入れなおしでも解決しませんでした。謎です。 さらに、Vistaビジネス入れなおし、VS入れなおししました。これでもf:\がどうこうと言って止まります。

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.1

まずは、Debug モードで「ソリューションのリビルド」を実行してみてください。 それでも駄目な場合、一度ソリューションを閉じた後、.sln ファイルと同じフォルダにある .ncb ファイルを削除してから再度「ソリューションのリビルド」を実行してみてください。 # 重箱の隅 # Release ビルドのことを「リビルド」とは言わないので注意。 # Release Build と Rebuild は区別しましょう。

kon_t
質問者

補足

最初の回答ありがとうございます。 まず、ReleaseからDebugに変更するとVSが固まります。 ご指導のとおり、.ncbを削除するとDebugが選択できるようになりました。その状態でソリューションのリビルドすると正常終了します。 そしてデバッグすると…例のダイアログが出て止まりました。 (プログラム名)のリビルドでも同じです。 #ReleaseとDebugの違い、リビルドはぼやっとはわかります。 #ご指摘ありがとうございます。

関連するQ&A

  • Visual Studio リモートデバッグについて

    Visual StudioのPro/Teamはリモートデバッグができるとあるのですが、MSDNを見てもリモートデバッグが具体的にどういうものか理解できていません。 デバッグ対象はC++で書いたコードや.net C#で書いたコードです。 2台コンピューターを用意して一方のプログラムをデバッグしながら制御ができるということでいいのでしょうか? また、Virtual PC上のプログラムにアタッチするというようなことも可能なのでしょうか? 普通のデバッグと操作上や機能上の違いはあるのでしょうか? 普段Visual Studioでデバッグする時のようにステップ実行やアセンブラ表示、レジスタの様子、メモリーの様子、変数の様子など見れるのでしょうか?もし可能なら次買う時はProを検討したいのですが。 デバッグしている様子などサイトを探したのですが見つからずイメージができないので、詳しい方いましたら教えていただけると助かります。

  • vc++ 関連

    ぼくは今vc++2008 を使っています. デバッグなしで実行だとでエラーになるのに デバッグだとエラーにならない というわけのわからないバグで混乱しています. デバッグモードだとエラーが出ないので バグが見つけられなくて困ってます. そういう事ってあるんですか? ちなみにエラーメッセージは Debug Assertion Failed! Program: ...ments\Visual Studio File: c:\program files\microsoft visual studio 9.0\vc\include\list Line: 218 Expression: list iterator not dereferencable です.

  • Visual studio 2008 のリダイレクトについて

    Visual Studio 2008を使ってC言語のプログラミングをしています C言語のプログラムの実行結果を別ファイルに リダイレクトしようとしたのですが プロジェクトのプロパティ→構成プロパティ→デバッグ コマンド引数の箇所に >output.txt と打ったのですが、実行結果はCtrl+F5でしか出力されません Visual studio 2005だとF5のデバッグだけでも出力されていたのですが Ctrl+F5だとキーをわざわざおさないといけないので非常に不憫です。 2008ですと、2005と違ってどこかプロパティの設定を いじらないといけない箇所があるのでしょうか? お分かり頂ける方、宜しくお願いします

  • visual studio 2015 exe 生成

    visual studio 2015のC++でWin32アプリケーションを作りました。 デバッグしようとしたところ、ビルドエラーが発生して、 「プログラム 'c:¥users¥documents¥visual studio 2015¥Projecst¥Win32project1¥Win32project1.exe'を開始できません。 指定されたファイルが見つかりません」と表示されます。 ソリューションのビルドは正常に出来ます。 そこでprojectのファイルを開いて見たのですが、確かにexeファイルが生成されていませんでした。 特に設定はいじってないです。 どうすればexeファイルが生成されるのでしょうか?

  • Visual C++ 2010 Express: [デバッグなしで開始

    Visual C++ 2010 Express: [デバッグなしで開始] 実行時もコンソールが閉じる Visual C++ 2008 Expressでは、 [デバッグなしで開始](Ctrl + F5)を実行すると、 出現したコンソールが、キー入力を待つ状態になっていたのですが、 Visual C++ 2010 Expressでは、同じ操作では 実行後にコンソールが閉じてしまいます。 Visual C++ 2010 Expressでも、[デバッグなしで開始]を 実行した後に、コンソールを閉じなくする方法があるのでしょうか? C言語の勉強中です。 最近コンピュータを新しくしたので、 ついでにVisual C++ 2010 Expressをダウンロードしたのですが、 プログラムの実行が確認できなくて困っています。 よろしくお願いします。

  • ソフトが使えない

    あるソフトを立ちあげようとすると Microsoft Visual C++ Debug Library Debug Assertion Failed!(プログラム名) For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) と言うメッセージがでてソフトが使えません。 これは、何のことでしょうか。 使えるようになるのですか。

  • Visual Studio2008でヘッダファイルが更新されない

    C++で、単純な計算プログラムを作成しています。 main.cとinit.hの2つのファイルで構成しています。2つとも、プロジェクトの親フォルダに入っています。 ヘッダファイルを変更して、ソリューションのリビルドをしても、ヘッダファイルの変更が反映されません。 構造体をヘッダファイルに記載していて、メンバを追加してリビルド後も反映されません。#defineでヘッダに記載していた定数を変数に変更しようとして、define文を消してリビルドしても、その値がずっと定数のままになってしまいます。 init.hファイルのファイル名をinit2.hに変更して、includeファイルも#include "init2.h"に書き換えてビルドすると反映されます。非常に不思議です。どこかVisual Studioの設定のような気がするのですが、環境設定の方法がわからず困っております。 どなたかご教示・ヒント・キーワード等よろしくお願いします。

  • デバッグエラー

    今晩和 VC++2005を使ってプログラムを開発しているのですが、デバッグ時に以下のエラーボックスが表示されます Debug Assertion Failed! Program: ... File: mbstowcs.c Line: 69 Expression: s!=NULL For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. コンパイルまでは問題なく出来るのですが・・・・ 原因不明でかなりまいっています 御教授お願いします 環境 WindowsXP SP3 Visual Studio 2005 アカデミー サンプルプログラム:http://chihara.naist.jp/people/STAFF/imura/products/labeling内のwindows用サンプル一式

  • Visual Studio 2005でコンソールプログラムのデバッグするとコマンドプロンプトが勝手に閉じる

    Visual Studio 2005でCのコンソールプログラムをつくってるんですが、デバッグするとコマンドプロンプトが勝手に閉じます。 閉じさせないようにする設定とかコードとかありませんか?

  • Visual Studio 2005のJust-in-timeデバッグを完全に停止したい

    こんにちは。Visual Studio 2005をインストールしたところ、以前まで表示されていた「問題が発生したため、○○.exeを終了します。」というようなダイアログが出てこなくなり、代わりにデバッグをするかどうか聞かれるようになりました。このようなJust-in-timeデバッガのダイアログではなく、「問題が発生したため・・」というダイアログを出したいのですが、オプションからJust-in-timeデバッガを無効にしても、プログラムがクラッシュしたときにJust-in-timeデバッガが無効になっているとエラーが出てしまいます。Just-in-timeデバッガを完全に停止する方法はないでしょうか?

専門家に質問してみよう