В Delphi: Как пропустить разделы кода при отладке?

Другой вариант - перейти в папку src в соответствующей папке проекта в рабочей области и там создать новую папку. Назовите эту папку как любое имя пакета, которое вы хотите, и поместите все ваши .java-файлы в эту папку. Обновите eclipse, закройте файлы .java и откройте новое место.

14
задан Wouter van Nifterick 16 January 2009 в 01:51
поделиться

7 ответов

Существует "волшебство nodebug переключатель". {$D-} отключит поколение кода отладки. Место, что во главе Вашей единицы FastMM и Вы не закончите тем, что проследили в него. И если Вы действительно заканчиваете в функции, Вы не хотите быть в, SHIFT-F8 выведет Вас очень быстро. ( ПРЕДУПРЕЖДЕНИЕ: не используют SHIFT-F8 из стандартной программы ассемблерного кода, которая играет вокруг со стеком. Непредсказуемое поведение может закончиться. F4 к нижней части его вместо этого.)

24
ответ дан 1 December 2019 в 06:24
поделиться

Если Вы вскакиваете в код FastMM, то существует операционное появление памяти. Код, который Вы показали, не начинает операций памяти, таким образом, Ваш вопрос является неполным. Я попытаюсь предположить то, что Вы имели в виду.

, Когда подпрограмма имеет локальные переменные управляемых компилятором типов (такие как строки, интерфейсы или динамические массивы), пролог функции имеет нетривиальную работу, чтобы сделать. Пролог также, где подсчеты ссылок входных параметров корректируются. Отладчик представляет пролог в begin строка функции. Если текущая точка выполнения будет то, что строка, и Вы "ступаете в" его, Вы будете взяты к коду RTL для управления специальными типами. (Я не ожидал бы, что FastMM будет вовлечен там, также, но возможно вещи изменились от того, к чему я привык.) Одна легкая вещь сделать в той ситуации состоит в том, чтобы "переступить" begin строка вместо в него; используйте F8.

, Если Вы действительно нажатие F7 [1 113] ввод Ваша выделенная строка, затем при выполнении его неправильно. Это ступает в begin строка, не строка, где DoStuff назван. Таким образом, ли Вы взяты к коду FastMM, не имеет никакого отношения к реализации DoStuff. Для отладки вызова к DoStuff текущая точка выполнения уже должна быть строка с запросом к нему.

, Если Вы только хотите отладить DoStuff на повторении 23498938, затем можно установить условная точка останова в той функции. Нажмите в грязи, чтобы сделать нормальную точку останова и затем щелкнуть правой кнопкой по ней для отображения ее свойств. Там можно определить условие, которое будет оценено каждый раз, когда выполнение достигает той точки. Отладчик только остановится там, когда условие будет верно. Нажмите F8 для "переступания" эти DoStuff вызов, и если условие будет верно, то отладчик остановится там, как будто Вы нажали F7 вместо этого.

можно переключить "отладку использования DCUs" опция постараться не ступать в большую часть RTL и единиц VCL. Я не знаю, включен ли FastMM в тот набор. Основное отличие - были ли DCUs, с которыми Вы связались, скомпилированы с отладочной информацией. Установка изменяется путь к библиотеке , чтобы включать или исключить подкаталог, где отладка DCUs. Я думаю , можно настроить набор включенных или исключенных каталогов отладки так, чтобы пользовательский набор каталогов был добавлен или удален на основе "отладки DCUs" установка.

Назад к точкам останова. Можно настроить группы точки останова путем присвоения имен к точкам останова. Можно использовать усовершенствованную точку останова, чтобы включить или отключить именованную группу точек останова при передаче ее. (У групп точки останова может быть всего одна точка останова, если Вы хотите.) Так, например, если Вы только хотите повредиться в местоположении X, если Вы также передали некоторое другое местоположение Y в Вашей программе, Вы могли бы установить отключенную точку останова в X и неразрывную точку останова в Y. Установите, "позволяют группам", устанавливающим в Y включить группу X

, можно также использовать в своих интересах отключенные точки останова без автоматического включения и отключения. Ваши точки останова появляются в окне отладки "точек останова". Если Вы ступаете до DoStuff, и Вы решаете, что хотите осмотреть bla на этот раз, перейдите к окну точки останова и включите точку останова в [1 110]. Никакая потребность перейти к [1 111] реализация для установки точки останова там.

Для больше об усовершенствованных точках останова, см. Использовать Неразрывные Точки останова в Delphi и статью Cary Jensen от несколько лет назад.

7
ответ дан 1 December 2019 в 06:24
поделиться

Я, возможно, пропустил что-то с Вашим сообщением, но с FastMM4 можно отредактировать FastMM4Options. Inc включают файл и удаляют '.' из следующего, определите:

<час>

От FastMM4Options.inc ****

{Включают этой опции подавить поколение информации об отладке для единицы FastMM4.pas. Это будет препятствовать тому, чтобы интегрированный отладчик ступил в код диспетчера памяти.}

{$ .define NoDebugInfo}

<час>

При перекомпиляции (возможно, нуждался бы в здании) желание отладчика больше (не должно) отлаживать код FastMM.

6
ответ дан 1 December 2019 в 06:24
поделиться

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

Один протест: завершение кода также полагается на Просмотр Пути, таким образом, Вы могли бы столкнуться со случаями, что завершение кода терпит неудачу при необходимости.

2
ответ дан 1 December 2019 в 06:24
поделиться

Хотя это не прямой ответ на Ваш вопрос, Вы могли изменить свое первое предложенное решение путем помещения точки останова в bla, который только включен, когда точка останова в Foo передается (или некоторое другое условие Вашего выбирала, такие как итеративное количество). Затем это только повредится, когда Вы захотите это к.

Как в стороне, я нахожу все больше, что не останавливаю выполнение в точках останова, а скорее вывожу значения переменных или дампы стека к журналу сообщений. Это позволяет более тщательный анализ, чем непрерывный контроль переменных, и т.д. FWIW.

2
ответ дан 1 December 2019 в 06:24
поделиться

Используйте предварительно скомпилированную неотладку DCU FasmMM

4
ответ дан 1 December 2019 в 06:24
поделиться

Нет. Я не полагаю, что существует способ сказать отладчику никогда не останавливаться в определенном разделе кода. Нет никакой волшебной директивы.

лучшее можно сделать при вхождении в стандартную программу, Вы не хотите быть в, должен использовать Shift+F8, который будет Работать до Возврата. Затем сделайте F7 или F8 для выхода из процедуры.

<час>

Hmmm. Теперь я вижу ответ Mason. Изученный что-то. Спасибо, Mason. +1

0
ответ дан 1 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: