DevPartner for Visual C++ BoundsChecker Suiteは、多くの開発機能を密に統合したスイート製品です。DevPartner Studioには、エラー検出、パフォーマンス分析、カバレッジ分析のほか、System Comparisonユーティリティも組み込まれています。DevPartner Studioは、ソフトウェア バグの検出、診断、解決、コード パフォーマンスの最大化、およびコード カバレッジを支援します。
技術的な問題を報告するには、オンライン質問フォームをお使いください。電子メールによるサポートが必要な場合は、call.center.japan@compuware.comまで電子メールをお送りください。
インストールからトラブルシューティングまで、テクニカルな問題についてはコンピュウェア テクニカル サポートまでお問い合わせください。
お問い合わせの際には、以下の情報をお知らせください。
このセクションでは、DevPartner Studioに関する既知の問題とテクニカル ノートを示します。以下の機能名やカテゴリをクリックすると、問題のリストが表示されます。
スイート製品全般に関する問題
カバレッジ分析
エラー検出
パフォーマンス分析
Visual Studio 2005またはVisual Studio 2005 Team System特有の問題
System Comparison
トップに戻るWindows Vista環境で[コントロール パネル]>[プログラム]>[プログラムと機能]>[プログラムのアンインストールまたは変更]から、DevPartnerのインストール オプションを変更できません。DevPartnerのセットアッププログラム(setup.exe)を実行し、[変更]オプションを使用してください。
DevPartnerインストール後、Visual Studio2005をインストールするには、以下の手順に従ってVisual Studio 2005とDevPartnerを結合させてください。
手順2で、DevPartner Studioヘルプ システムとMicrosoftヘルプ システムを統合します。
DevPartner Studioの各機能を使用して、同時にアプリケーションの監視を行うことはできません。たとえば、DevPartner Studioのエラー検出が実行ファイルを監視しているとき、Fault Simulatorの機能は使用できません。DevPartner Studioのエラー検出、パフォーマンス分析、メモリ分析などの組み合わせや、Fault SimulatorとSecurity Checkerなども同様です。
データ実行防止機能(DEP)が有効になったシステムで、/NoExecute=Always Onに設定されている場合、Visual Studioの読み込み時にDevPartnerのエラーが発生します。DEPの設定を OptOutにする場合、Visual Studioの実行ファイル(Visual Studio 2005/2003ではDEVENV.EXE、Visual Studio 6ではMSDEV.EXE)をDEPから除外してください。
データ実行防止機能に関してはMicrosoftサポート技術情報の文書番号875352を参照してください。
システムの起動パーティションに存在する、BOOT.INIファイル、/NOEXECUTEオプションを変更することで、システム全体のDEP設定を変更できます。デフォルトではOptInです。これは、特定のWindowsプログラムやサービス以外は、DEP機能を有効にすることを意味します。この設定を AlwaysOnにすると、DevPartner Studioのインストールは失敗します。また、インストール後にAlwaysOnにすると、Visual Studioの起動時にパッケージの読み込みエラーが発生します。
DevPartner Fault Simulator製品との統合には、DevPartner Studio 8.2.1は使用できません。Fault Simulatorと統合する場合は、DevPartner Studio 8.2を使用する必要があります。
DevPartner Studioのインストール後にFault Simulator 1.5をインストールし、その後、Fault Simulatorをアンインストールすると、DevPartner Studioの実行時にライセンス エラーが発生します。
この問題を修正するには、Fault Simulatorのアンインストール後に以下の操作を行います。
インストール/アンインストール中に、アプリケーションの開始失敗、もしくは読み込みできないメモリを読み込んだ、というMSI.EXEのエラーが発生することがあります。この場合、[OK]を押して、エラーを無視してください。インストール/アンインストールは、このエラーが出ても問題ありません。
多くのアンチウイルス製品で採用されている、バッファ オーバーラン保護機能が有効になっている場合、IISやインターネット エクスプローラのプロファイリングを行うとIISやインターネット エクスプローラが不定期にクラッシュが発生します。エラー コードは、以下のようなメッセージです。
アプリケーションを正しく初期化することができませんでした。(0xc0000005)
アンチウイルス製品がインストールされている状態で、こうしたエラーが発生した場合、アンチウイルス製品のバッファ オーバーラン保護機能を無効にするか、アンチウイルス製品にアップデートが存在しないかを確認してください。
Microsoft Visual Studio 2005 Service Pack 1をインストールしたあと、PCの再起動を行ってください。
Windows Server 2003上でVisual Studio 2005 Service Pack 1をインストールする場合、Microsoftサポート技術情報の文書番号925336に記載されている問題に注意してください。
UACが有効なVistaシステムにおいて、管理者権限を持たずにVisual Studioを開始し、パフォーマンス データ収集を行った場合、Mach5ドライバが開始できません。パフォーマンス エキスパートは動作せず、パフォーマンス分析では正しくないデータが収集されます。Microsoftが推奨するように、管理者権限で動作させるか、 net start mach5を使用してMach5ドライバを手動で開始してください。
コンストラクタが異なるソース コードに実装されている、パーシャル クラスにおいて、コンストラクタとは異なるソース コードでクラス メンバーの静的な初期化を行っている行の情報は取得できません。
この場合、該当する行はデータが存在しない行として表示されます。これは、データがパーシャル クラスのコンストラクタで初期化されるようにコンパイルが行われ、実際の初期化行ではコードが生成されないためです。ソース コードが、初期化子だけを含み、実行行を持たない場合、モジュール一覧のリストにも表示されません。
エラー検出を実行する場合、以下のようなエラーが発生する場合があります。
この問題の回避方法については、Frontline(http://frontline.compuware.com/apps/kb/)のDevPartner Studioサポート技術情報にアクセスし、「Team Foundation Server」を検索してください。
Vista環境において、BugBenchサンプルプログラムをビルドする際に、管理者権限が必要です。これは、BugBenchサンプル プログラムがシステムに登録を行う必要のあるCOM DLLを使用するためです。Vistaにおいては、COM DLLの登録には適切な権限が必要になりました。
スタンドアロン ユーザー インターフェイスのエラー検出で、[プロセスを待機]を使用してエラー検出を行う場合、ターゲット アプリケーションの名前とパスを、完全に同じものを指定する必要があります。ターゲットの名前やパスに異なる指定を行った場合、エラー検出は正しくモニタを開始できません。たとえば、ターゲットファイルにC:\MyApplications\foo.exeを選択し、[プロセスを待機]オプションを使用、アプリケーションをC:\MyAppl~1\foo.exeとして起動すると、エラー検出は正しくアプリケーションの開始を検出できません。
DevPartnerは、ソリューション ファイルで指定されたシンボル バスではなく、プロジェクト ファイルで指定されたシンボル ファイルを参照します。シンボル情報ファイルが存在するにも関わらず、存在しないというメッセージが出た場合、[プロジェクト設定]でシンボル パスを定義してください。
古いバージョンのソリューション ファイルを実行する場合、以下のようなメッセージが発生します。「有効なソリューション ファイルではありません。」これは、以前のバージョンのDevPartnerにより追加された古いエントリがソリューションの中に残っているためです。この現象が発生した場合、メモ帳で古いエントリの削除を行ってください。
マイクロソフトのシンボルを要求するアプリケーションをエラー検出で最初に起動するときに、Microsoft Internet Symbol Storeというダイアログボックスで、使用許諾への同意を要求されることがあります。すでに、他の方法で使用許諾に同意している場合でも、アプリケーションを継続して起動するためには、再度使用許諾に同意する必要があります。異なるプログラムからシンボルの使用を行う場合には、それぞれのアプリケーションで使用許諾への同意が必要になります。
不特定な環境において、ターミナル サービス経由でログインしたアカウントから、Windowsサービスのプロファイリングを行うと、結果が表示されないことがあります。この現象が発生した場合、DPAnalysisコマンドを使用してセッション ファイル名をフルパスで指定し、保存させてください。
DpAnalysis.exe /cov /output c:\temp\MyService.dpcov /s MyService
注意: この方法で回避できない場合も存在します。
コマンド ラインから、NMCL/NMLINKツールを使用する場合、PATH環境変数への追加が必要です。
たとえば、デフォルト インストールの場合、次のディレクトリをPATH環境変数に追加してください。
C:\Program Files\Common Files\Compuware\NMShared
Microsoftのデバッグ ファイル アクセスで、リンカ オプションの /pdbtype:septがサポートされなくなりました。Visual C 6.0 IDEは、このオプションがデフォルトとなっています。このオプションを変更しても、アプリケーションに対する影響はありません。そのまま開発を継続できます。エラー検出でビルドすると、自動的かつ一時的にこのオプションを無効に設定しますが、もし、エラー検出でビルドしない場合、エラー検出はどういうオプションでビルドが行われたかを判断できず、さまざまな誤警告をレポートします。
誤警告の例
回避策
プロジェクト設定のリンカ タブ、プロジェクト オプションのテキスト ボックスを修正します。テキスト ボックスに表示されているテキストの最後に、/pdbtype:septと書かれています。これは、新規のプロジェクトを作成した際に、Visual Studio 6のIDEが自動的に追加したオプションです。このオプションを削除し、リビルドを行ってください。こうすることで、エラー検出はデバッグ シンボル ファイルに正しくアクセスできます。
IDE以外からビルドを行っている場合、makeファイルにこのオプションを手動で追加していないかを確認します。もし、makeファイルが /pdbtype:septを指定している場合、このオプションを削除してください。
DCOMまたはCOMベースのアプリケーションやコンポーネントがaspnetアカウントの制限下で実行される状況は2つあります。デフォルトでは、ASP.NETが有効なWebページ内からDCOMまたはCOMのアプリケーションやコンポーネントが起動されると、aspnetアカウントのコンテキストで実行されます。セキュリティ上の理由から、aspnetアカウントは、制限付きアカウントになっています(これはユーザー グループのメンバーで、同等の権限を持っています)。このため、この状況ではCOMコンポーネントにはエラー検出が正しく機能するために必要なセキュリティ権限がありません。この問題を回避するには、対話ユーザーのコンテキスト内で(dcomcnfg.exeを介して)実行されるようにDCOMまたはCOMアプリケーションやコンポーネントを設定する必要があります。
以下の手順で、対話ユーザーのコンテキストで実行されるようにDCOMまたはCOMのアプリケーションやコンポーネントを設定します。
- コマンド プロンプトを開き、dcomcnfg.exeを実行します。
- [コンポーネント サービス]>[コンピュータ]>[マイ コンピュータ]>[DComの構成]の順に選択します。
- COM コンポーネントを右クリックして、[プロパティ]を選択します。
- [識別]タブを選択します。
- [対話ユーザー]を選択していることを確認します。
- [OK] をクリックします。
DCOMまたはCOMのアプリケーションやコンポーネントを次回起動したときには、エラー検出によって適切にデータが収集されます。
出荷時のBugBenchサンプル プログラムのソース パスはVisual Studio .NET 2003用に設定されています。BugBenchサンプルをVisual Studio 2005で実行する場合には、Visual Studio 2005で標準設定となっているソースのディレクトリを指定するように、BugBenchプロジェクトの設定でソース パスを変更する必要があります。
エラー検出では、サービスを分析できない場合があります。一般的な原因としては、プロセスの監視に使用する1つまたは複数のディレクトリが、作成されるプロセスに対して書き込み可能になっていないことが挙げられます。以下のディレクトリは、書き込み可能にする必要があります。
- TMP環境変数とTEMP環境変数は、プロセスに書き込むことができるディレクトリを参照する必要があります。LOCAL_SYSTEMコンテキストを実行するようにサービスを構成している場合は、これらの環境変数をシステム全体に割り当てる必要があります。
- サービスには、NLBファイル ディレクトリへの書き込みアクセス権が必要です。
- サービスには、作業ディレクトリへの書き込みアクセス権が必要となる場合があります。
[デバッグ]ボタンを使用して[検出されたプログラム エラー]ダイアログ ボックスを非表示にすると、デバッガでエラー検出が停止できない場合があります。[デバッグ]ボタンを使用して[検出されたプログラム エラー]ダイアログ ボックスを非表示にすると、アプリケーションでは、エラー検出によってエラー後の最初の行の初めに一時ブレークポイントが設定されます。一時ブレーク ポイントは、アプリケーションがデバッガで停止したときに自動的に削除されます。ブレーク ポイント例外をキャッチして実行を継続する例外ハンドラがアプリケーションにある場合、デバッガでブレーク ポイントをキャッチし、アプリケーションを停止することができなくなります。
書き込み権限がないディレクトリでエラー検出を使用してアプリケーションを実行すると、以下のようなエラーが表示される場合があります。
UserAllocatorsError:An error was discovered when processing the UserAllocators.dat file.Failed to create UserAllocators.log file Error:0x00000005
[データ収集]設定ページで[NLBファイル ディレクトリ]を設定するか、[NLBファイルを動的に生成する]チェック ボックスをオンにすることで、UserAllocatorsファイルが書き込まれるディレクトリを設定することができます。
For
ループの式部分に起因するCPU時間が、誤ってFor
ループ本体に関連付けられることがあります。この問題は、以下の例のように、初期化子、式、イテレータが1行にフォーマットされたループで発生します。
using System; public class ForLoopTest { public static void Main() { for (int i=1; i<=5; i++) Console.WriteLine(i); } }
For
ループの本体がCPU時間を過剰に消費している場合は、以下のように、初期化子、式、イテレータがそれぞれ別の行に表示されるようにコードの形式を変更してください。
{ for (int i=1; i<=5; i++) Console.WriteLine(i); }
IIS 6.0環境で実行しているASP .NETで、パフォーマンス分析セッションの実行直後に、カバレッジ分析セッションを実行しようとすると、Visual Studioの応答が停止する場合があります。
この状況から回復するには、以下の操作を実行します。
iisreset
」と入力します。この状況を予防するには、以下の2つの方法があります。
iisreset
を実行します。サポートされているローエンド システムのPC(Pentium III 733 MHz)上でパフォーマンス分析の実行速度が非常に遅い場合、システム プロパティから、プロセッサ スケジュールを変更し、バックグラウンド サービスと同等の優先度を設定することで、パフォーマンス分析セッションの速度を上げることができます。
カバレッジ分析やパフォーマンス分析を実行すると、Visual Studioが応答しなくなったあと、以下のようなエラー メッセージが表示されることがあります。
Internet Information Serverを再起動できませんでした(コード%d)。
(上記のメッセージの%dは内部エラー コードを表します。この問題においては、このコードを無視することができます。)
この問題が複数回発生する場合には、Internet Information Serverが動作していることを確認します。動作していない場合には、パフォーマンス分析の設定ダイアログから、システムDLLを除外して再起動します。
それでも問題が解決しない場合は、コマンド ラインからDPAnalysis.exe
を実行してアプリケーションを分析します。inetinfo
を除外する構成ファイルを使用して、DPAnalysis.exe
を実行してください。
詳細については、DevPartner Studioオンライン ヘルプのトピック「DPAnalysis.exe」や『DevPartnerユーザー ガイド』の付録Cを参照してください。
DevPartner Fault Simulator 1.5とDevPartnerをインストールしたシステムでは、Fault Simulatorとカバレッジ分析のセッションを同時に実行することができます。(同時に実行するには、[Fault Simulator]>[Fault Simulatorおよびカバレッジ分析を開始]または[Fault Simulator]>[デバッグなしでFault Simulatorおよびカバレッジ分析を開始]を選択します。)
管理対象のWindowsスタンドアロン アプリケーションに対してFault Simulatorとカバレッジ分析のセッションを同時に実行すると、DevPartnerセッション コントロールのツールバーが使用できない場合があります。このため、セッション時に[記録を停止]、[スナップショットの取得]、[すべての記録データをクリア]の各機能が使用できなくなります。
カバレッジ分析でDevPartnerセッション コントロールのツールバー機能を使用する必要がある場合は、以下のいずれかの回避方法を試してください。
ローカライズ バージョンのVisual Studio Team Systemで作業項目の種類、Bugの名前が「Bug」以外の文字列に変更されている場合、DevPartner Studioでから作業項目としてバグを作成、Team Projectに提出することができません。
マネージ プロジェクトとアンマネージ プロジェクトの両方を含むソリューションを開く場合、DevPartnerメニューの以下のコマンドを使用できません。
混合コードのソリューションを分析する方法は2つあります。
Visual Studio内からアンマネージ コードを分析するには、以下の操作を実行します。
コマンド ラインからマネージ プロジェクトとアンマネージ プロジェクトを同時に分析するには、以下の操作を実行します。
Visual Studio 2005では、[ツール]>[オプション]>[プロジェクトとソリューション]>[全般]オプション ページで、作成時に新規プロジェクトを保存するオプションを無効にして、ゼロ インパクト プロジェクト(ZIP)を作成できます。ただし、このオプションを無効にすると、DevPartner Studioでは、ソリューション エクスプローラにセッションファイルの仮想フォルダを作成したり、このフォルダにセッション結果を保存したりすることができません。プロジェクトでDevPartnerを使用するには、以下の操作が必要です。
プロジェクトを保存せずにセッションを開始し、Visual Studioで「プロジェクトを追加する前に現在のプロジェクトを保存してください」という内容のメッセージが表示されたら、[保存]をクリックします。Visual Studioはプロジェクトの名前を変更し、ソリューション エクスプローラに保存します。この場合はセッション ファイルが作成されますが、このセッション ファイルにはプロジェクト ソース コードと実行モジュールの一時的な場所への参照と、一時プロジェクト名が含まれます。
Visual Studio 2005の「ZIP」プロジェクトでDevPartner Studioを実行することはお勧めしません。
デフォルトで、System Comparisonサービスは自動的に開始するように設定されています。このサービスにより対象マシンのスナップ ショットが毎日取得されるため、ユーザーは容易にシステムの比較を行えます。サービスの実行優先度は最小に設定されていますが、実行中は数分間にわたってシステム リソースを若干消費します。システム リソースの使用が問題になる場合は起動タイプを手動に設定することができますが、手動に設定した場合はスナップ ショットが自動的に作成されなくなります。
前バージョンのSystem Comparisonユーティリティで取得されたスナップ ショットとDevPartner 8.1.1以降のバージョンで取得されたスナップ ショットを比較すると、System Comparisonユーティリティでプラグイン スキーマの互換性がないことを示すメッセージが表示されます。スナップ ショットに記録されたデータが変更されているため、新旧スナップ ショットの有効な比較を作成することはできません。
さらに、カスタム プラグインを作成している場合には、現在のバージョンのプラグイン スキーマでカスタム プラグインをリビルドする必要があります。
System Comparisonでは、システムの比較時に以下の追加設定をチェックできるようになりました。
前バージョンのSystem Comparisonユーティリティで取得したスナップ ショットとDevPartner Studio 8.2またはそれ以降のバージョンで取得したスナップ ショットを比較すると、新しい設定が、旧スナップ ショットで見つからない設定としてリストされます。
エラー検出設定ですべてのモジュールをオフにした場合でも、エラー検出によってリークとエラーがレポートされます。理由は以下のとおりです。
DevPartner Fault Simulator SEをインストールしてライセンスが必要なFault Simulator機能を使用する場合、そのライセンス チェックアウトによってライセンス タイムアウト ポリシーが上書きされます。
Visual C 6でカバレッジ分析とエラー検出を実行するには、DevPartnerメニューまたはツールバーの[エラー検出]オプションを有効にする必要があります。
DevPartner for VC++ BoundsChecker Suiteに関する既知の問題
Copyright © 2007, Compuware Corporation
08/09/2007 03:34 PM