ArcGIS 10アドインをデバッグするときにブレークポイントを「ヒット」できないのはなぜですか?


24

たまに次の問題に遭遇します。

アドインのデバッグを開始すると、ブレークポイントは無視されます。IDEとコンポーネント間の通信が機能していないようです。

私の問題は、これが最後に起こったときに解決したので、今それを修正するために何をしたか思い出せないことです。

現在、ブレークポイントはヒットしません。ドキュメントにシンボルがロードされていません。 ここに画像の説明を入力してください

部分的に、私が抱えている問題はすでにここで説明されてますが、実際のブレークポイントの誤動作に対する解決策はありません。

これは通常機能することに注意してください。

ビンとオブジェクトを削除しても機能しないようです。

今回は、バックアップからプロジェクト全体を復元し、最初からやり直しましたが、この問題に再度遭遇した場合の修正方法を知りたいと思います。


1
構成ファイルで「onDemand」xml属性がfalseに設定されていますか?
カーククイケンドール

明確な答えはありません(通常、デバッガーはロードされたdllのpdbファイルを見つけることができないことを意味します)が、SOでこれらの質問をふるいにかけて、正しい方向に進むかどうかを確認できます。
マイケルトッド

@ Kirk、config.esriaddinxファイルにそのような属性はありません。
ヤクブSisak GeoGraphics

@マイケル-ありがとう。詳しく見ていきます。問題は...私は数ヶ月のために私のアドインに機能を追加し、喜んで離れdebugginとsudenlyブレークポイントが作業をしないことができるということである
ヤクブシサクGeoGraphics

2
明確な理由もなく、何度かそれを経験しました。私がobjを削除、リコールおよびbinディレクトリが解決し、それが現在のプロジェクトのbinディレクトリに容疑者PDBとDLLをコピー数回は、数回働いていた、など何も私はそれを指すことができた場合は、すべての時間を動作します、しかし。がんばろう。
マイケルトッド

回答:


16

以下は、ESRIスタッフによる非公式かつ未検証のソリューションです。(彼らはこれが公式の解決策ではないことを強調しました)

binディレクトリのarcmap.exe.configから削除してみてください。

これは、\ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config xmlファイルです。

ここに画像の説明を入力してください


3
実際、それはここに「文書化されています」resources.arcgis.com/en/help/arcobjects-net/conceptualhelp / ... ogr-workspaceプラグインのコーディング中にこの問題に遭遇し、最終的にDeveloper FAQ github.com/に入れました。 RBURHUM / arcgis-ogr
Ragi Yaser Burhum

これは私が私の持っていた別の問題だけでなく、私のために問題を解決しDebug.WriteLine()、VS 2010での出力ウィンドウに送信されていないメッセージ
GeoSharp

私は再びこの問題に遭遇しました、そして、これは今回働いたものです。VS 2010 Express(C#)を実行し、.NET 4.0をターゲットにしています。v4.0でサポートされているランタイムバージョンのコメントを解除し、v2.0の参照を削除する必要がありました。
レーダー

8

2年と2バージョン後、これはまだ問題です。10.2のすべてのアドインの更新/改善を完了したところ、この問題に再び遭遇しました。この投稿ですべての提案を実装しましたが、何も機能しませんでしたが、1つの追加の問題を発見しました。残念ながら、私は同時に他のほとんどの可能な修正も実装したため、これが原因かどうかはわかりません。

新しい発見:バージョン10以降、同じマシン上でアドインを開発しており、再インストール後にレガシーArcGISデータが必ずしもクリーンアップされないことがわかりました。C:\ Program Files(x86)\ ArcGISにある以前のバージョンのArcGISデータに、古いバージョンの犯人アドインがあったことがわかりました。ArcGISはレガシーアドインをロードするため、何らかの競合が発生した可能性があります。すべてのレガシーarcgisアプリケーションデータ(Desktop10.0、Desktop10.1)を削除して、Desktop10.2のみを残し、ブレークポイントが有効になりました。繰り返しますが、これが解決策である場合、私は100%ではありませんが、チェックするリストの別の項目である可能性があります。

この特定の問題が別のサイトで「究極の生産性キラー」と呼ばれるのを見てきましたが、私はこれ以上同意できませんでした。

ここに要約すると、「デッド」ブレークポイントの問題に関する現在の予定リストです。

  1. 確かに、私は実際にアドインを実行しています。デバッガーでアプリケーションを起動するだけでは不十分です-アドイン(ボタン、メニューオプションなど)を実行するまで、ブレークポイントは「死んでいる」ように見えます。

  2. プロジェクトディレクトリからOBJおよびBINフォダーを削除します。

  3. assebmly chacheのコンテンツを削除します:C:\ Users \ User \ AppData \ Local \ ESRI \ Desktop10.2 \ AssemblyCache

  4. すべてのレガシーアセンブリデータを削除します。(現在のバージョンが10.2の場合、Desktop10.0、Desktop10.1のアセンブリデータを削除します)これが役立つ、または問題の一部であるという証拠はありませんが、このデータが存在する必要がある理由はないので、念のため削除します(C :\ Users \ User \ AppData \ Local \ ESRI)

  5. ESRIのサポート提案に従って; ArcCatalogおよびArcMap構成XMLを変更します(私が試したとき、それ自体では動作しませんでしたが、ESRIサポートを含むソリューションとしてこれを推奨する人が何人かいました)ArcCatalog.exe.configおよびArcMap.exe.configをC:\ Program Files( x86)\ ArcGIS \ Desktop10.2 \ bin各XMLをメモ帳で開き、行を削除します。5 <supportedRuntime version="v2.0.50727"/> 行目です

  6. インストールディレクトリからすべてのレガシーArcGISアプリケーションデータを削除します。これは私のために働いたもの。(おそらく)C:\ Program Files(x86)\ ArcGISに移動します。Desktop10.xの現在のフォルダー(つまり、Desktop10.0、Desktop10.1)を除くすべてを削除します。現在のデスクトップバージョンのみがこの場所に残っています。

  7. 非ESRI参照を含むすべてのプロジェクト参照を削除して再追加し、保存し、手順2と3を繰り返し、再コンパイルし、dbuggerを実行します。

  8. コンピューターを再起動します。(これは過去にも機能していました)また、これがStack Overflowの推奨ソリューションの1つであることがわかりました。

  9. Config.esriaddinxで-onDemand = falseを含むようにボタンを変更します:(Kirkの提案-上記参照)これは個人的にはうまくいきませんでした。

  10. プロジェクトをゼロから再構築します。(これは過去に私のために働いた。)


Jakub、私は似ているが無関係の問題を抱えていたgis.stackexchange.com/questions/155016/…-レガシーも問題であることが判明した。.netフレームワークのバージョンは最新ではなかったので、これらすべてを試してもまだ機能しない場合は、リンクをたどって別の可能性を探してください。
マイケルスティムソン

5

これを取得したのは、別のArcMapインスタンスを開いて、ビルド/デバッグの前に閉じるのを忘れたときだけです。アセンブリを使用してすべてのインスタンスを閉じない場合、古いインスタンスが引き続き使用されます。またはそのようなもの。


VSを開いてコンピューターを再起動し、ArcMapの他のインスタンスを開かずにデバッガーを実行しようとしました。「デッドブレークポイント」の問題が続いたため、通常どおりArcMapを起動しました。
ヤクブSisak GeoGraphics

ですから、ArcGISとVisual Studioを別のマシンでセットアップするだけで(すべてクリーンインストール)、同じことが再び起こり始めました。私は皆の提案を試みましたが、あなたは正しいようです。開いているすべてのArcGISプロセスを強制終了します。強制終了すると、ブレークポイントが機能します。
ヤクブSisak GeoGraphics

5

プロジェクトの.NET Frameworkは4.0であるためsupportedRuntime version="v4.0.30319"、ArcMap.exe.config に変更しましたが、この変更により問題が遅れていることに気付きました。また、ArcMapがArcCatalogを読み込むことも思い出したので、ArcCatalog.exe.configもsupportedRuntime version="v4.0.30319"YES に変更しました !!! 再び機能しています。私はこれを修正するために一日中費やしました、そしてそれがあなたにとってもうまくいくことを願っています。


1
binフォルダーとobjフォルダーも削除する必要がありました。
サビンコラロフ

4

上記の提案をしばらく試してみたところ、ようやく解決に至りました。追いかけて、最初に解決策を示し、次に説明します。

  1. タスクマネージャーを開きます。ArcMap.exeのコピーのプロセスを終了します。

  2. Windowsエクスプローラーを開きます。C:\ Users \\ Local Settings \ ESRI \ Desktop10に移動します。

  3. AssemblyCacheが表示されない場合は、[整理]> [フォルダーと検索オプション]> [表示]> [保護されたオペレーティングシステムファイルを非表示にする(推奨)]をオフにします。

  4. AssemblyCacheのディレクトリで、.dllを含むディレクトリを探します。

  5. .dllを削除します。

  6. プロジェクトを再構築してデバッグします。アドインがアクティブになると、キャッシュの内容が更新されます。

  7. 必要に応じて、保護されたOSファイルを再度非表示にします。

私にとっての問題は、C:\ Users \\ Local Settings \ ESRI \ DesktopX.X \ AssemblyCache \フォルダーにDLLの古いインスタンスがあり、気づかなかったので\ AssemblyCacheも表示できなかったことです。それは隠しOSファイルでした。また、ArcMapのゾンビインスタンスが実行されていたため、DLLを最初に削除しようとしてもロックされていました。私の疑いは、そもそも問題を引き起こしたのは、コードを再コンパイルして別のセッションを開始する前に、ArcMapのデバッグセッションを完全にシャットダウンしなかったことです。キャッシュ内の古いDLLは、古いArcMapインスタンスによってロックされたままなので上書きできず、新しいコードとの同期が外れると、キャッシュされたバージョンは更新されなくなります。(ファイルの日付によって、.config、.pdb、および.xmlは更新されているが、.dllは更新されていないことがわかります。)


はい、これは正しい回避策のようです。
ヤクブSisak GeoGraphics

2

私はまったく別のトピックで自分のアドインを使用して同じ問題に対処していましたが、次のことを検証しました:

最初に、デバッグを開始し、メニューで次のウィンドウデバッグ>>ウィンドウ>>モジュールを選択します。ここで、デバッグの開始時にロードされたモジュールを確認できます。yourAddIn.dllが表示されない場合は、少なくともスタジオによってロードされていないことがわかります。そこに表示され、そこにブレークポイントを配置できない場合、スタジオは古いブレークポイントをロードしました。これを確認するには、プロジェクトプロパティでアセンブリ名を変更し、ソリューションを再構築し、デバッグを開始すると、古いDLLがロードされていることがわかります。スタジオはこの古いdllをどこからロードするのかわかりません。

ソリューションエクスプローラーに移動して、「yourAddIn.Addin」ファイルと「yourAddIn-For Testing.AddIn」ファイルを比較してください。これらは異なる場合があります。スタジオは、アドインマネージャーで2番目のファイルのみを使用します!最初の変更では、正しいdllを参照するようにタグも変更します。タグも確認できます。私にとっては、「yourAddIn-For Testing.AddIn」ファイルで0に戻されたので、それを1に戻しました(アドインのbinディレクトリを削除してスタジオを起動すると、プロンプトが表示され、尋ねられますこのアドインをアドインリストから削除しますか?この時点で、StudioはLoadBehaviorを0に設定します。

これらの2つの変更の後、再び機能し始めました!


あなたの経験を共有し、詳細を提供してくれてありがとう。コミュニティへようこそ!
whuber

2

Visual Studioを使用して、Arcmap用の新しいアドインを作成し、ボタンとツールバーを追加しました。次のような構成ファイルが作成されます。

<ESRI.Configuration xmlns="http://schemas.esri.com/Desktop/AddIns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Name>ArcMapAddin4</Name>
  <AddInID>{b6b350bb-084d-42b8-a44a-6dbb6a9f5906}</AddInID>
  <Description>Type in a description for this Add-in.</Description>
  <Version>1.0</Version>
  <Image>Images\ArcMapAddin4.png</Image>
  <Author>Kirk</Author>
  <Company>Microsoft</Company>
  <Date>8/15/2011</Date>
  <Targets>
    <Target name="Desktop" version="10.0" />
  </Targets>
  <AddIn language="CLR" library="ArcMapAddin4.dll" namespace="ArcMapAddin4">
    <ArcMap>
      <Toolbars>
        <Toolbar id="MyToolbar4" caption="MyToolbar4" showInitially="true">
          <Items>
            <Button refID="Microsoft_ArcMapAddin4_Button1"/>
          </Items>
        </Toolbar>
      </Toolbars>
      <Commands>
        <Button id="Microsoft_ArcMapAddin4_Button1" class="Button1" message="Add-in command generated by Visual Studio project wizard." caption="My Button" tip="Add-in command tooltip." category="Add-In Controls" image="Images\Button1.png" />
      </Commands>
    </ArcMap>
  </AddIn>
</ESRI.Configuration>

Buttonのコンストラクターにコードを作成し、ブレークポイントを挿入しました。デバッグモードで起動し、アセンブリがまだ読み込まれていないことを確認します。

ここに画像の説明を入力してください

onDemand = falseを含むようにボタンを変更しました:

ここに画像の説明を入力してください

再びアークマップを開始すると、ブレークポイントに到達しました。ツールバーが起動時にオフになっている場合、ボタンコンストラクターを呼び出すには、ツールバーを表示する必要があることに注意してください。


@Kirkに感謝します。バックアップからプロジェクトを復元したので、今は動作するようです。私は通常、さらに先の手順をデバッグします。つまり、今回はそうだったボタンのクリックからも呼び出されました。この時点で、アセンブリは既に読み込まれていると確信しています。(またはする必要がありますが、それは何らかの理由ではありません)私はこの問題が次回発生したときに間違いなくこのソリューションを試してみます。
ヤクブSisak GeoGraphics

2

フレームワーク4をArcCatalogの新しい10.1バージョンと使用するために、arcCatalogのアドインを変更する必要がありました。
version = "v2.0.50727"をコメントアウトし、コメントを外した "v4.0.30319"

C:\ Program Files(x86)\ ArcGIS \ Desktop10.1 \ binのArcCatlog.exe xml構成ファイル

ブレークポイントで停止します

arcmapと同じ問題のようです


2

ESRI ArcGIS 10プロジェクトをあるマシンから別のマシンに移行した後、マシンがArcMap.exeのデバッグ.pdbファイルをロードできないというエラーが発生しました。私はこの投稿に関するあらゆるアドバイスを運なしで試しました。

その後、私は次のことをしました:

それらを含む各プロジェクトのすべてのEsri。*ライブラリの参照を削除し、それらを新しいマシンのプロジェクトに再追加しました。

これは最終的に私のために働いたものです。このあいまいな問題で誰かがここでつまずき、このページにリストされている他のすべてを試した場合、これを試してください-それは迅速かつ簡単で、かなり無害です。なぜこれを行う必要があるのか​​は完全にはわかりませんが、マシンごとにライブラリを検索することに関係していると思います。

これは、新しいアドインではなく、BaseCommands / Toolbarsを使用したプロジェクト用でした。Windows 7 Pro上のVisual Studio 2010でArcGIS 10.0および.NET 3.5を使用します。


2

.Net 4.0 Frameworkをターゲットにしている人のために、以下がうまくいきました。

  1. 多くの提案に従って、ArcMap.exe.configおよびArcCatalog.exe.configをターゲット4.0フレームワーク
    <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0.30319"/> <!--supportedRuntime version="v2.0.50727"/--> </startup>
    に変更します。何らかの理由で、ArcCatalog.exe.configが変更のためロックされているように見えます。他のディレクトリでそれをコピーして修正し、それを置き換えることで回避しました。
  2. 次に、Config.esriaddinxでアドイン言語を "CLR4.0"

1

2つの原因が思い浮かびます。

  1. アドインが正しく登録されていないため、DLLはデバッグ中のArcMapプロセスにロードされません。

  2. プロジェクトは.NET 4をターゲットにしています。代わりに.NET 3.5をターゲットにしてみてください。


.Net 3.5をターゲットにします。なぜすべてがうまくいくのか、突然ではないのかがわかりません。
ヤクブSisak GeoGraphics

1

同じVisual Studioソリューションで複数のプロジェクトを使用してコーディングしている場合、Visual Studio(VS)がブレークポイントを「無効」にし、コードをステップ実行できない状況が発生する可能性があります。これは最近、私のメインプロジェクトから呼び出されていた「依存」DLLアセンブリプロジェクトに足を踏み入れることができなかったときに私に起こりました。

VSの警告は、アセンブリ(DLL)が古く、コードと完全には一致していないことを示唆しています。コードが一致するという要件をオフにするVSオプションがありますが、直感的にはこれは悪い考えのようで、インターネットの投稿によってバックアップされました。私は多くのWebサイトを読みましたが、そこにはいくつかのひどい提案があります。

最終的には、依存マシンから出力DLLを検索し、コンピューターのさまざまな場所でいくつかの古いコピーを見つけました(おそらく以前の実験とプロジェクト構成から)。そのため、それらをすべて削除し、ソリューションを最初から再構築しました。これで問題が解決しました。私の現在のプロジェクトは、何らかの理由で古いコピーの1つに誤ってバインドされ、デバッグフォルダーに配置された最新のビルドを使用していないと思います。


1

私のために働いたのは、上記のJakubの投稿で説明されているようにarcmap.config.exeを削除せず、このファイルの「supportedRuntime」タグをVisual Studio内でターゲットとする正しいバージョンのフレームワークに設定することです。

<startup>
    <supportedRuntime version="v3.5"/>
</startup> 

1

多くのArcObjectsプロジェクトで、アドイン、エクステンション、コマンド(プリアドイン)でデバッグが機能しない理由のリストをまとめました。順不同:

  1. デバッグモードではなく、Visual Studioのリリースモードである
  2. ツールの古いバージョンは引き続きArcMap / ArcCatalogに登録されており、これらはデバッグバージョンのロードを妨げているか、同じ名前の他のツールが登録されています
  3. プロジェクト/ソリューションはクリーニングが必要で、必要に応じて\ binと\ objに移動し、残留ファイルを削除します
  4. 場合によっては、ブレークポイントは、ツールがアクティブ化された後にしかヒットできない(オンデマンド)
  5. ブレークポイントにヒットしない場合、コンストラクターで例外が発生している可能性があり、ツールは実行されません。デバッグメニューにすべてのCLR例外を表示して確認する
  6. C:\ Users \ <name> \ Local Settings \ ESRI \ DesktopX.X \ AssemblyCacheのエントリを削除する必要があります

多くの手順では、ArcMapを再起動する必要があります。他のすべてが失敗した場合、マシンの再起動は簡単なフォールバックですが、私は一度だけこれを変えました。



0

私はこれを一度か二度思いました。正しく覚えていれば、マイナーなコード変更を行ったときにブレークポイントを機能させることができました。つまり、アプリケーションが再構築されました。プロジェクトをビルドまたはリビルドするとどうなりますか?


私は...プロジェクトを再構築しようとしたいくつかの変更を行ったが、まだブレークポイントは「死んだ」だった
ヤクブシサクGeoGraphics

0

もっと多くの人がこの問題を抱えていないとは信じられません。アドインの改善とデバッグを行うたびに、これに遭遇します。

上記のソリューションはどれも機能しません。これを修正するには、プロジェクト全体を削除し、バックアップから復元する必要があります。これは、デバッグ中にArcMapがクラッシュしたときに通常発生し始めるため、特定のプロジェクトの何かが破損したと信じるようになります。


残っているArcMap.exeプロセスはありますか?アドイン、拡張機能、コマンドなどがリソースを保持したり、ArcMapの完全な終了を妨げる競合状態を引き起こすことがあります。
blah238

実行中のArcMap.exeプロセスはありません。ESRIスタッフから、binディレクトリのarcmap.exe.configから<supportedRuntime version = "v2.0.50727" />を削除してみてくださいという返信があります。ただし、このアイテムをどこから削除するのかわかりません。バックアップからプロジェクトを復元したばかりで、現在は機能しています。この修正について詳しく知ると、デバッグ中にArcMapがクラッシュし、通常これが発生し、試してみることになります。
ヤクブSisak GeoGraphics

0

Framework 4を使用してプロジェクトを作成していますか?私も同じ問題を抱えていましたが、Framework 3.5に切り替えると正常に機能します。


0

クリーンアップと再構築を試みてから、アプリケーションを実行するときにデバッグせずに実行し、VSでアタッチします


0

これはあまりにも明白に聞こえるかもしれませんが、とにかく言及するのは、適切なエディションのVisual Studioが必要だということです。たとえば、この問題は、特定の年のエクスプレスエディションで発生する可能性がありますが、究極のエディションで動作する可能性があります。たとえば2010を使用している場合は、2012に切り替えてください。その後、エクスプレスからアルティメットに切り替えてみてください。シンボルの読み込みの問題をいじる前にまだしていない場合は、これを行います。ESRIは、上記のリンク(ArcObjects 10 .NET SDKヘルプ)で説明されているように、シンボルをキャッシュにダウンロードすることに関する情報を提供します。ただし、これは必ずしも必要ではありません。デバッグする前にも、適切な.netフレームワークを使用していることを確認してください。たとえば、古いエディションの.net 3.5です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.