BUG: Visual C します。NET または Visual C 2005 のデバッガーでは、std::string と std::wstring 変数を正しく表示できません。

文書翻訳 文書翻訳
文書番号: 326616
Notice
すべて展開する | すべて折りたたむ

目次

現象

デバッガー値を適切に表示されない、次の文字列。
  • std::string 変数は、文字列の長さの場合15 文字を超える。
  • std::wstring 変数は、文字列の長さが小さい場合は、15 文字以下します。

原因

Std::string または std::wstring 変数は静的に格納されます。バッファーの長さが 15 文字以下の場合です。場合は、文字列の長さ15 文字を超える文字列はメモリへのポインターとして格納されます。

デバッガーの表示を制御するのには、Autoexp.dat ファイルを変更することができます。std::string 変数の。は、 _Bx._Buf メンバーを使用して静的に格納されている、std::string を指定するにはバッファーです。は、 _Bx._Ptr メンバーを使用して、std::string としてのポインターを格納するを指定するにはメモリにします。場合は、 _Bx._Ptr autoexp.dat ファイル内の std::string のメンバーが指定されていませんがデバッガーは大きい長さが、std::string 変数が表示されません。15 文字以下します。時 _Bx._Buf autoexp.dat ファイル内の std::wstring のメンバーが指定されていませんがデバッガーは長さが std::wstring 変数が表示されないよりも小さい15 文字。

解決方法

変数の値が表示されますのデバッガーのコンポーネントです。既知の式エバリュエーター (EE) として。EE のインスタンスが 1 つのネイティブ コードを処理、他のインスタンスは、マネージ コードを処理します。Autoexp.dat ファイルを提供します。カスタマイズには、ネイティブの EE と Mcee_mc.dat ファイルを提供します。マネージ EE をカスタマイズします。この問題を解決するのには、Autoexp.dat を変更します。ファイルです。

Autoexp.dat ファイルを変更するには、次の手順を実行します。
  1. メモ帳などのテキスト エディターを開きます。
  2. Autoexp.dat ファイルを c:\Program から開くただし Visual Studio。NET\Common7\Packages\Debugger フォルダー。
  3. Autoexp.dat ファイルには、次の行を見つけます。
    • std::basic_string<char,std::char_traits<char>,std::allocator<char> >=<_Bx._Buf>
    • std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >=<_Bx._Ptr>
    • std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >=<_Bx._Ptr>
  4. 手順 3 で見つけた行を置換する、次の行:
    • std::basic_string<char,std::char_traits<char>,std::allocator<char> >=
      _Buf=<_Bx._Buf> _Ptr= <_Bx._Ptr>
    • std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >=_Buf=<_Bx._Buf> _Ptr= <_Bx._Ptr>
    • std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >=<_Bx._Buf> _Ptr= <_Bx._Ptr>

状況

マイクロソフトこれに記載されているマイクロソフト製品の問題であることを確認していますこの資料の冒頭にあります。

詳細

現象の再現手順

  1. 新しいの Visual の C++ の Win32 プロジェクトを作成します。
    1. で、 ファイル メニューをクリックして 新しい.
    2. 下にあります。 [プロジェクトの種類をクリックして Visual C プロジェクト、し Win32プロジェクトテンプレート.

      メモ Visual Studio 2005 年には Visual C プロジェクト 変更するのには Visual C.
    3. プロジェクト名を入力します。 LongStringDemo.
    4. で、 Win32 アプリケーション ウィザードをクリックして [アプリケーションの設定、し、 アプリケーション種類 として コンソール アプリケーション.
    5. 下にあります。 その他のオプション、.選択、 空のプロジェクト チェック ボックスをオンにしをクリックしてください 終了日.
  2. ソリューション エクスプ ローラーを右クリックしてソース ・ ファイル、し 新しい C++ を追加します。ジョブ.
  3. ファイルを名前します。 LongStringDemo.cpp.
  4. LongStringDemo.cpp ファイルに次のコードを追加します。
    #include <string>
    using namespace std;
    void main()
    {
    	//Ansi String
    	string szAnsiString;
    	szAnsiString = "c:\\Program Files\\Microsoft Visual Studio .Net";
    
    	//Wide Char String
    	wstring wszWCharString;
    	wszWCharString = L"c:\\Program Files\\Microsoft Visual Studio .Net";
    }
    
  5. で、 ビルド メニューをクリックして ビルドソリューション.
  6. で、 デバッグ メニューをクリックして ステップ イン(F11) デバッグを開始します。
  7. で、 デバッグ メニューのポイントWindows、ポイント ウォッチ、し[ウォッチ 1].
  8. SzAnsiString し、wszWCharString を追加します。[ウォッチ] ウィンドウに変数です。値を指定することによりも見ることができる、szAnsiString または wszWCharString の変数です。
  9. で、 ウォッチ ウィンドウでの値を確認してください。szAnsiString または wszWCharString の変数です。

プロパティ

文書番号: 326616 - 最終更新日: 2011年7月28日 - リビジョン: 4.0
キーワード:?
kbbug kbdebug kbmt KB326616 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:326616
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com