В 64-битной отладке Delphi с использованием библиотек времени выполнения активен неправильный кадр стека - PullRequest
0 голосов
/ 12 июня 2018

Я столкнулся с проблемой отладки в Win64, когда, похоже, нам «не хватает» отладочной информации.Поэтому я провел исследование и заново создал все мои файлы .dproj для нашего флагманского продукта.Это помогло, поскольку я вернул свои «пропавшие» синие шары.

Но теперь я столкнулся с новой проблемой: (верхний) кадр стека, отображаемый в окне отображения стека, кажется неправильным, что приводит к локальномупеременные не отображаются на панели локальных переменных, а также не отображаются при наведении курсора мыши над какой-либо переменной.Но когда я выбираю кадр стека, который я считаю правильным, окно локальных переменных больше не пустое.При наведении курсора мыши все еще ничего не отображается.

Также проверьте связанные скриншоты, которые должны многое прояснить.

Соответствующие параметры компилятора

  • Информация об отладке: Информация об отладке
  • Локальные символы: True
  • Кадры стека: True
  • Справочная информация о символах: справочная информация
  • Использование debug dcus: False
  • Использовать ссылки на импортированные данные: True
  • Информация об отладке компоновщика: True
  • Включить символы удаленной отладки: False

Информация о версии:

  • RAD studio Enterprise 10.2.3 Токио, сборка 25.0.29899.2631
  • DDevExtension установлен, IDEFixPack установлен (удаление не имеет значения)
  • JCLDebug установлен (удалениебез разницы)

Я поиграл со многими комбинациями настроек отладки, но проблема сохраняется в моей системе.

Мой компьютер с коллегами имеет точно такую ​​же проблему в том же кодетак что у лвосток это воспроизводимо с уверенностью.При попытке воспроизвести это, используя небольшой проект с исполняемыми файлами bpl, проблема, как представляется, не возникает, или я не могу воспроизвести ее.Поэтому у меня нет источника для этого.

И, конечно, вот (а) вопрос (ы): - Кто-нибудь еще испытывал это?- нашли решение?- Поделись, пожалуйста!- Не нашли решения?-> пожалуйста, добавьте комментарий / голосуйте за этот выпуск

Я хотел бы добавить несколько фотографий, чтобы прояснить, но, к сожалению, моя репутация пока недостаточно высока.Так что я могу только добавлять ссылки на картинки, извините за это.

  • Breakpoint in source code view
  • Breakpoint in Full CPU view
  • Select sub-top stackframe
  • Going even one lvl deeper, unexpected stack top
  • The previous instruction caused the stack display to get mangled

1 Ответ

0 голосов
/ 29 июня 2018

Как оказалось, здесь происходит нечто совершенно иное.Похоже, что пропущенные локальные символы вызваны тем, что отладчик не загружает ВСЕ данные отладки.Я создал модульный тест загрузки BPL во время выполнения.Когда я запускаю свою форму (проверяю соответствующие скриншоты) из модульного теста, стековые рамки и локальные символы отображаются правильно. Когда я запускаю форму из моего довольно большого приложения, точно такой же двоичный bpl НЕ показывает локальные символы и стекИнформация.Как ни странно, другие модули в том же BPL действительно показывают правильную информацию о стеке и локальных переменных, например, модуль, который создает форму на первом месте, в порядке, где создается конструктор формы.

Так что я догадалсячто-то происходит с загрузкой таблицы символов.И когда я изменяю настройки отладки на те, что показаны на скриншоте (Load All SYmbols = off, и onoy load отладочная информация для основного bpl), вуаля мой стек и локальные переменные отображаются правильно.В том же бинарном.Когда я включаю «загрузить символы для неопределенных модулей», я возвращаюсь к старой ситуации с отсутствующим стеком и локальными символами.

Так что я подозреваю, что есть предел тому, сколько отладочной информации может обработать отладчик ( действительно ? В 64-битном режиме ?), Который я, кажется, помню из отладки Delphi 2..7 давным-давно.

Конечно, при этом мне не хватает отладкиинформация для всех других подразделений, поэтому, хотя это и ответ, это не окончательное решение.Я поставлю еще один вопрос и выпью на сайте embarcadero.

enter image description here

...