Чому точка відключення не може бути "вдарена" під час налагодження надбудови ArcGIS 10?


24

Час від часу я стикаюся з такою проблемою:

Я починаю налагоджувати надбудову, і точки проключення ігноруються. Майже здається, що зв’язок між IDE та компонентом не працює.

Моя проблема полягає в тому, що востаннє це сталося, я вирішив це, і тепер я не можу згадати, що я зробив, щоб виправити це.

Точка розриву наразі не потрапила. Символи для документа не завантажені. введіть тут опис зображення

Частково проблема, з якою я маю, вже описана тут, але для фактичної несправності точки розриву немає рішення.

Зверніть увагу, що це нормально працює.

Видалення bin та obj, здається, не працює.

Цього разу я просто відновив весь проект із резервного копіювання і почав заново, але хотів би знати, як це виправити, якщо я знову натраплю на це.


1
Чи встановлено атрибут xml "onDemand" у вашому конфігураційному файлі значення false?
Кірк Куйкендалл

У мене немає остаточної відповіді (хоча це зазвичай означає, що налагоджувач не може знайти файл pdb для завантаженого dll), але ви можете спробувати просіяти ці питання на SO, щоб побачити, чи пересувають вони вас у правильному напрямку.
Майкл Тодд

@Kirk, я не бачу такого атрибута у файлі config.esriaddinx.
Jakub Sisak GeoGraphics

@Michael - спасибі придивіться уважніше. Проблема полягає в тому, що я можу місяцями додавати функціональні можливості до свого додатка і щасливо відлаштовуватись, а точки зору зупинки не працюють ...
Jakub Sisak GeoGraphics

2
У мене це траплялося кілька разів і без видимих ​​причин. Якщо я пам’ятаю, видалення каталогів obj та bin вирішило це кілька разів, копіюючи підозрілий pdb та dll в каталог бін поточного проекту, працювало пару разів і т. Д. Нічого, на що я можу вказувати, що буде працювати щоразу , хоч. Удачі.
Майкл Тодд

Відповіді:


16

Ось неофіційне і досі неперевірене рішення співробітників ESRI. (Вони підкреслювали, що це не офіційне рішення)

Спробуйте видалити з arcmap.exe.config в каталозі bin.

Це файл \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config xml.

введіть тут опис зображення


3
Насправді, це "задокументовано" тут Resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/… Я зіткнувся з цією проблемою, коли кодував плагін ogr-робочої області і в кінцевому підсумку помістив його у 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 додаткову можливу проблему . На жаль, я не впевнений, винуватець цього був чи ні, тому що я також реалізував більшість інших можливих виправлень одночасно.

Нова знахідка: я зрозумів, що розробляю Addins з версії 10 на одній машині, і після перевстановлення не завжди очищав застарілі дані ArcGIS. Я виявив, що мав старішу версію винуватця доповнення в попередній версії даних ArcGIS в C: \ Program Files (x86) \ ArcGIS. Оскільки ArcGIS буде завантажувати застарілі надбудови, то, можливо, стався якийсь конфлікт. Я видалив усі застарілі дані програми arcgis (Desktop10.0, Desktop10.1), залишивши лише Desktop10.2 і остановився. Знову я не на 100%, якщо це рішення, але це може бути ще один пункт у списку, на який слід перевірити.

Я бачив, як цю проблему називали "кінцевим вбивцею продуктивності" на іншому сайті, і я не зміг погодитися.

Підводячи підсумок, це мій поточний список справ для "мертвих" проблем точки перерви:

  1. Переконайтесь, що я фактично запускаю Addin. Запустити програму налагодження програми недостатньо - точка перерви з’явиться «мертвою», поки я не запустять додаток (кнопка, опція меню тощо)

  2. Видаліть OBJ та BIN-файли з каталогу проектів.

  3. Видаліть вміст чаші assebmly: C: \ Користувачі \ Користувач \ AppData \ Місцевий \ ESRI \ Desktop10.2 \ AssemblyCache

  4. Видаліть усі застарілі дані збірки. (Якщо поточна версія 10.2 видалити дані про збирання Desktop10.0, Desktop10.1) Немає доказів, що це допомагає або є частиною проблеми, але немає причини, щоб ці дані існували, тому я видаляю їх на всякий випадок (C : \ Користувачі \ Користувач \ AppData \ Місцеві \ ESRI)

  5. Відповідно до пропозиції підтримки ESRI; Змініть конфігурацію XML ArcCatalog та ArcMap (не спрацював сам, але кілька людей рекомендували це як рішення, включаючи підтримку ESRI). Знайдіть ArcCatalog.exe.config та ArcMap.exe.config в C: \ Program Files ( x86) \ ArcGIS \ Desktop10.2 \ bin Відкрийте кожен xml у блокноті та видаліть рядок. <supportedRuntime version="v2.0.50727"/> Це приблизно п'ятий рядок

  6. Видаліть усі застарілі дані програм ArcGIS з інсталяційного каталогу. Це те, що працювало для мене. (ймовірно) Перейдіть до: C: \ Program Files (x86) \ ArcGIS Видалити всі папки, окрім поточних, для Desktop10.x (тобто Desktop10.0, Desktop10.1) У цьому місці має залишатися лише поточна версія Desktop.

  7. Видаліть та повторно додайте всі посилання на проекти, включаючи посилання, що не належать до ESRI, перезавантажте, повторіть кроки 2 та 3, перекомпілюйте, запустіть відладчик.

  8. Перезавантажте комп'ютер. (Це працювало раніше) АЛЕ знайшов, що це одне із рекомендованих рішень щодо переповнення стека.

  9. У Config.esriaddinx - змініть кнопку, щоб вона включала onDemand = false: (пропозиція Кірка - див. Вище) Це особисто не працювало для мене.

  10. Перебудувати проект з нуля. (Це працювало для мене в минулому.)


Якуб, у мене була схожа, але незв'язана проблема gis.stackexchange.com/questions/155016/… - виявляється, спадщина теж була проблемою. Версія фреймворку .net не була поточною, тому якщо ви спробували все це, і він все ще не працює, перейдіть за посиланням, щоб отримати ще одну можливість.
Майкл Стімсон

5

Єдиний раз, коли я отримав це, коли у мене був відкритий інший екземпляр ArcMap і забув його закрити перед тим, як створити / налагодити. Якщо ви не закриєте всі екземпляри, що використовують збірку, то старий буде продовжувати використовуватися. Або щось подібне.


Я спробував перезавантажити комп'ютер, відкриваючи VS та запустивши налагоджувач, не відкриваючи жодних інших примірників ArcMap. Він запустив ArcMap, як зазвичай, проблема "мертвої точки розриву" зберігалася.
Jakub Sisak GeoGraphics

тож я просто налаштував ArcGIS і Visual Studio на іншій машині (всі чисті встановлення), і те саме почалося знову. Я спробував усі пропозиції, і ви, здається, правильні. Я переконався, що я вбиваю всі відкриті процеси ArcGIS і коли я це роблю, точки прориву працюють.
Jakub 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"ТАК !!! Він працює знову. Я провів цілий день, намагаючись виправити це, і сподіваюся, що це теж працює для вас.


1
Мені довелося видалити також папки бін та obj.
Сабін Коларов

4

Я деякий час спробував пропозиції, і нарешті дійшов до рішення. Вирішивши погоню, я спочатку дам рішення, а потім пояснення:

  1. Відкрити диспетчер завдань. Кінцевий процес для будь-якої копії ArcMap.exe.

  2. Відкрийте Провідник Windows. Перейдіть до C: \ Users \\ Місцеві налаштування \ ESRI \ Desktop10 ..

  3. Якщо ви не бачите AssemblyCache, організуйте> Параметри папок та пошуку> Переглянути> зніміть прапорець "Сховати файли захищеної операційної системи (рекомендується)"

  4. У каталогах AssemblyCache шукайте той, що містить ваш .dll.

  5. Видаліть .dll.

  6. Відновіть проект і налагоджуйте. Як тільки додавання активується, ви побачите оновлення вмісту кешу.

  7. При бажанні повторно захойте захищені файли ОС.

Проблема для мене полягала в тому, що в папці C: \ Users \\ Local Settings \ ESRI \ DesktopX.X \ AssemblyCache \ був старий екземпляр моєї DLL, і я також не міг побачити \ AssemblyCache, тому що я не усвідомлював це був прихований файл ОС. Був також екземпляр зомбі запущеного ArcMap, і коли я спробував видалити DLL, він спочатку був заблокований. Я підозрюю, що причиною проблеми в першу чергу є те, що я не повністю повністю закрив сесію налагодження ArcMap, перш ніж перекомпілювати код і запустити інший. Стару DLL в кеші не вдалося перезаписати, оскільки старий екземпляр ArcMap все ще був заблокований, і як тільки він вийшов із синхронізації з новим кодом, кешована версія більше не оновлювалася. (Я можу побачити, за датами файлів, що .config, .pdb та .xml оновлюються, але не .dll.)


Так, це звучить як правильне рішення.
Jakub Sisak GeoGraphics

2

Я мав справу з тією самою проблемою, із власним доповненням у зовсім іншій темі, і я уникнув наступних дій:

Спочатку запустіть налагодження і в меню виберіть наступне вікно Налагодження >> Модулі Windows >>, де можна побачити, які модулі завантажувались при запуску налагодження. Якщо ви не можете побачити там yourAddIn.dll, то принаймні ви знаєте, що він не завантажений студією. Якщо ви бачите там і ви не можете поставити там точку розриву, тоді студія завантажила стару. Щоб перевірити це, змініть ім'я збірки у властивостях проекту, відновіть рішення, запустіть налагодження, і ви побачите старий dll, завантажений там. Я не знаю, звідки студія завантажує цю стару DLL.

Перейдіть до Провідника рішень і перевірте порівняння файлів "yourAddIn.Addin" і "yourAddIn - For Testing.AddIn", і вони можуть відрізнятися. Студія використовує лише 2-й файл у своєму менеджері надбудов! При першій зміні Також змініть тег у ньому, щоб він посилався на правильний dll, і ви також можете перевірити тег. Для мене було встановлено значення 0 у файлі "yourAddIn - для тестування.AddIn", тому я змінив його на 1. (Якщо ви видалите каталог бін свого додатка і запустить студію, він запропонує вам запитати і запитати що ви хочете видалити цю надбудову зі свого списку надбудов! На цьому етапі Студія встановлює LoadBehavior на 0).

Після цих двох змін він знову почав працювати!


Дякуємо, що поділилися своїм досвідом та піклувались про надання нам деталей. Ласкаво просимо до нашої спільноти!
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>

Я створив якийсь код у конструкторі для кнопки і поставив у ньому крапку. Я запускався в режимі налагодження і бачу, що збірка ще не завантажена:

введіть тут опис зображення

Я змінив кнопку, щоб включити onDemand = false:

введіть тут опис зображення

Коли я знову почав arcmap, він потрапив у точку розриву. Зауважте, що якщо панель інструментів вимкнена під час запуску, вам потрібно зробити її видимою, щоб викликати конструктор кнопок, тому вона певною мірою все ще вимагається.


Дякую @Kirk. Оскільки я відновив проект із резервного копіювання, він, здається, працює зараз. Я зазвичай налагоджую процедуру, яка далі вниз; тобто зателефонував із натискання навіть кнопки, що було цього разу. Я майже впевнений, що збірка вже завантажена. (або має бути, але це не чомусь), я обов'язково спробую це рішення наступного разу, коли це станеться.
Jakub Sisak GeoGraphics

2

Довелося змінити додаток для arcCatalog, щоб він відповідав використанню фреймворка 4 з новою версією ArcCatalog 10.1.
Щойно прокоментував версія = "v2.0.50727" та не коментував "v4.0.30319"

У C: \ програмні файли (x86) \ ArcGIS \ Desktop10.1 \ bin конфігураційний файл ArcCatlog.exe xml

зупинка на точці розриву зараз

Здається, це те саме питання з arcmap


2

Після перенесення проекту ESRI ArcGIS 10 з однієї машини на іншу я зіткнувся з помилкою, що машина не могла завантажити файли налагодження .pdb для ArcMap.exe. Я спробував кожну пораду на цій посаді без жодної удачі.

Тоді я зробив наступне:

Я видалив посилання на всі бібліотеки Esri. * У кожному проекті, який їх містив, і повторно додав їх до проекту на новій машині.

Це те, що нарешті спрацювало для мене. Якщо хтось спіткнувся тут із цим розпливчастим питанням та спробував усе, що перераховано на цій сторінці, спробуйте це - це швидко та легко та досить нешкідливо. Я не зовсім впевнений, чому це потрібно було зробити, я припускаю, що це стосується пошуку бібліотек на машині.

Це було для проекту, який використовував BaseCommands / панелі інструментів, а не нові надбудови. Використання ArcGIS 10.0 та .NET 3.5 з Visual Studio 2010 на Windows 7 Pro.


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 змініть мову Addin на "CLR4.0"

1

На думку мені приходять дві можливі причини:

  1. Аддін не зареєстровано належним чином, тому DLL не завантажується в процес налагодження ArcMap.

  2. Ваш проект націлений на .NET 4. Натомість спробуйте націлити на .NET 3.5.


Націлювання. Net 3.5. Я просто не розумію, чому все буде добре, і раптом ні.
Jakub Sisak GeoGraphics

1

Якщо ви кодуєте кілька проектів в одному і тому ж рішенні Visual Studio, ви можете зіткнутися з ситуаціями, коли Visual Studio (VS) "відключає" ваші точки проходу, і ви не можете перейти через свій код. Це сталося зі мною недавно, коли я не міг перейти до "залежного" проекту складання DLL, який викликався з мого основного проекту.

Попередження VS припускають, що моя збірка (DLL) застаріла і точно не відповідала моєму коду. Існують варіанти VS, щоб вимкнути вимогу відповідності коду, але інтуїтивно це здавалося поганою ідеєю і було підкріплено повідомленнями в Інтернеті. Я читаю багато веб-сайтів, і там є якісь пропозиції.

Зрештою я здійснив пошук вихідної DLL з моєї залежної машини і знайшов кілька старих копій у різних місцях на моєму комп’ютері (імовірно, з попередніх експериментів та конфігурацій проекту). Тому я видалив їх усіх і відновив своє рішення з нуля. Це вирішило мою проблему. Я думаю, що мій поточний проект якимось чином ненавмисно прив’язаний до однієї зі старих копій і не використовував останню збірку, яка розміщувалася в моїй папці налагодження.


1

Що працювало для мене, це не видалення arcmap.config.exe, як описано у публікації Якуба вище, а встановлення тегу "podržaний час виконання" у цьому файлі на правильну версію Framework, на яку ви орієнтуєтесь у Visual Studio, в моєму випадку:

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

1

Протягом декількох проектів ArcObjects я склав список причин, через які налагодження може не працювати для надбудов, розширень та команд (попередньо надбудова). Ні в якому конкретному порядку:

  1. Ви знаходитесь у режимі випуску Visual Studio замість режиму налагодження
  2. Старі версії інструменту все ще зареєстровані в ArcMap / ArcCatalog, і це перешкоджає завантаженню вашої версії налагодження або реєструються інші інструменти з такою ж назвою
  3. Проект / Рішення потребує очищення, і, якщо необхідно, зайдіть у \ bin та \ obj та видаліть усі затримані файли
  4. У деяких випадках точки прориву можна потрапити лише після активації інструменту (на вимогу)
  5. Якщо точки прориву не потрапляють, можливо, у конструкторі відбувається виняток, і інструмент ніколи не запускається. Перевірте, показавши всі винятки CLR в меню налагодження
  6. Записи в C: \ Користувачі \ <ім'я> \ Локальні налаштування \ ESRI \ DesktopX.X \ AssemblyCache потрібно видалити

Багато кроків вимагають перезапуску ArcMap. Якщо все інше не вдається, перезапуск машини - це легкий запас, але мені лише один раз довелося це змінити.


1

Те, що для мене працювало, описано AnthonyWJones на /programming/7192361/silverlight-project-wont-enter-debug-mode : "Відкрийте властивості пов'язаного веб-проекту. Виберіть веб-вкладку. Перейдіть до внизу та в розділі "Налагоджувачі" переконайтесь, що "Silverlight" встановлено ".


0

У мене таке траплялося один-два рази. Якщо я добре пам’ятаю, мені вдалося змусити роботу точки перелому, коли я вніс незначну зміну коду, що означало, що додаток було відновлено. Що відбувається, коли ви будуєте або відновлюєте свій проект?


Я спробував відновити проект і вніс кілька змін, але все-таки точки прориву були "мертвими" ...
Якуб Сисак GeoGraphics

0

Я не можу повірити, що більше людей не мають цієї проблеми. Зараз я стикаюся з цим майже кожен раз, коли я вдосконалюю і налагоджую свої додатки.

Жодне з вищезгаданих рішень не працює. Щоб виправити це, мені потрібно видалити весь проект і відновити його з резервного копіювання. Це змушує мене вважати, що щось у конкретному проекті пошкодилось, оскільки воно зазвичай починається, коли ArcMap виходить з ладу під час налагодження.


Чи існують тривалі процеси ArcMap.exe? Іноді надбудови, розширення, команди тощо можуть утримувати ресурс або спричиняти стан перегонів, що заважає ArcMap повністю вийти.
blah238

Жодних процесів ArcMap.exe не запущено. Тепер у мене є відповідь від співробітників ESRI, щоб спробувати видалити <supportRuntime version = "v2.0.50727" /> з arcmap.exe.config у каталозі бін. Однак я не впевнений, звідки я видаляю цей елемент, і я щойно відновив проект із резервного копіювання, і він зараз працює. Коли я дізнаюсь більше про це виправлення, під час налагодження я зірву ArcMap, що зазвичай робить це, і спробую.
Якуб Сисак GeoGraphics

0

Ви створюєте свій проект за допомогою Framework 4? У мене була така ж проблема, але коли я переходжу на Framework 3.5, вона працює добре.


0

спробуйте очистити та відновити, а потім запустіть без налагодження, коли програма запуску приєднає її до VS


0

Я знаю, що це може здатися занадто очевидним, але я все одно зазначу, що вам потрібне відповідне видання Visual Studio. Наприклад, ця проблема може виникнути з експрес-виданням за певний рік, хоча вона може працювати з остаточним виданням. Якщо ви використовуєте, скажімо, 2010, спробуйте перейти на 2012. Потім спробуйте переключитися з експрес-класу на кінцеву. Я б зробив це, якщо ви ще не до того, щоб зіпсуватись із проблемами завантаження символів. ESRI надає інформацію про завантаження символів у кеш, як зазначено у посиланні вище (довідка ArcObjects 10 .NET SDK). Однак це може не бути необхідним. Переконайтеся, що ви використовуєте відповідний .net фреймворк також перед налагодженням, наприклад .net 3.5 у старих виданнях.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.