Sign in Join
Wiki copytemporary

GDB Debugger Tips/ru: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11# Вступление
22
33Lazarus поставляется с [[GDB]] в качестве отладчика по умолчанию. Начиная с Lazarus 2.0, это значение по умолчанию изменилось на LLDB на MacO.
44
55- Эта страница для Lazarus 1.0 и новее. Для более старых версий см. \[ предыдущая версия этой страницы\]
6-- <u>Примечание по GDB 7.5</u>: GDB 7.5 не поддерживается выпущенной версией 1.0. Исправления для поддержки были сделаны в 1.1.
6+- Примечание по GDB 7.5: GDB 7.5 не поддерживается выпущенной версией 1.0. Исправления для поддержки были сделаны в 1.1.
77
88# См.также
99
1010## Установка (GDB и LLDB)
1111
1212Чтобы получить наилучшие результаты, вы должны убедиться, что ваша IDE и Project правильно настроены.
1313
1414См. раздел [[Debugger Setup/ru|установка отладчика]], чтобы настроить IDE и ваш проект для использования отладчика.
1515
1616[Setup Video Tutorial](http://www.youtube.com/watch?v=cf4G06k2YL8)
1717
1818## Другое
1919
2020[[Debugger Console App|Debugging console applications]]
2121
2222# Основное
2323
2424## Тип отладочной информации (GDB и LLDB)
2525
2626> **Note:** Эти настройки применяются только к проекту или пакету, для которого они установлены. Если вы изменяете настройки в любом из параметров проекта или пакета, следует убедиться, что это сделано для **всех** пакетов и проекта.\
2727> В противном случае ваш проект будет иметь смешанную информацию отладки, что может привести к ухудшению процесса отладки.\
2828> Настройки могут быть применены к проекту или пакетам с использованием [[IDE Window: Compiler Options|Additions and Overrides]]
2929
30-> **Note:** При компиляции <b><u>32-битных</u></b> приложений (нативных или кросс) FPC по умолчанию имеет значение "Stabs" (по крайней мере, в некоторых ОС). Рекомендуется изменить вашу конфигурацию на "Dwarf".
30+> **Note:** При компиляции 32-битных приложений (нативных или кросс) FPC по умолчанию имеет значение "Stabs" (по крайней мере, в некоторых ОС). Рекомендуется изменить вашу конфигурацию на "Dwarf".
3131
3232Для 64-битных приложений FPC поддерживает только "Dwarf". (Старые FPC также поддерживают "Stabs", но это не рекомендуется)
3333
34-<table>
35-
36-<tr valign="top">
37-
38-<td>
39-
4034### Stabs (только GDB)
4135
42-</td>
43-
44-<td>
45-
46-<b>-g</b> или <b>-gs</b>
36+-g или -gs
4737
4838Вы должны использовать только если ваша версия GDB не поддерживает \[режим\] dwarf. Есть очень мало других случаев, когда вам это нужно.
4939
5040Вам может понадобиться это \[в случае использования\] «var param» (param by ref): `procedure foo(var a: integer);` Однако IDE имеет дело с этим в 99% всех случаев.
5141
5242Отладчик на основе LLDB не поддерживает \[режим\] Stabs
5343
54-</td>
55-
56-</tr>
57-
58-<tr valign="top">
59-
60-<td>
61-
6244### Dwarf (GDB и LLDB)
6345
64-</td>
65-
66-<td>
67-
6846#### Dwarf 2 (-gw)
6947
7048Это устанавливает формат в Dwarf2. Это самая основная настройка dwarf.
7149
7250#### Dwarf 2 с наборами (-gw -godwarfsets)
7351
7452Этот параметр добавляет возможность проверки наборов: "type TFoo=set of (a,b,c);". Это заимствовано из спецификаций Dwarf 3, но поддерживается большинством версий GDB (любой GDB начиная с версии 7 и выше должен это делать).  **Это рекомендуемая настройка.**
7553
7654#### Dwarf 3 (-gw3)
7755
7856Dwarf 3 может кодировать дополнительную информацию для некоторых типов (таких как строки и массивы). Это также сохраняет регистр идентификаторов в отладочной информации.
7957
80-Однако все еще есть проблемы с произведенной отладочной информацией. Некоторая информация может быть неправильно закодирована, а другая не понята GDB. В некоторых случаях это может привести к <u>падению gdb</u>. Этот параметр можно использовать при использовании отладчика на основе FpDebug (добавить пакет для IDE)
81-
82-</td>
83-
84-</tr>
85-
86-<tr valign="top">
87-
88-<td>
58+Однако все еще есть проблемы с произведенной отладочной информацией. Некоторая информация может быть неправильно закодирована, а другая не понята GDB. В некоторых случаях это может привести к падению gdb. Этот параметр можно использовать при использовании отладчика на основе FpDebug (добавить пакет для IDE)
8959
9060### Различия
9161
92-</td>
93-
94-<td>
95-
9662Этот список никоим образом не полон:
9763
9864- dwarf допускает некоторые свойства (те, которые непосредственно сопоставлены с полем)
9965- stabs (и современный gdb) может делать -gp (сохранить регистр символов вместо того, чтобы получать все заглавные буквы).
10066- stabs имеет проблемы с некоторыми типами классов. IDE исправляет это в некоторых случаях. (Влияет только на GDB 7.0 и выше) [1](http://bugs.freepascal.org/view.php?id=19920)
10167
102-</td>
103-
104-</tr>
105-
106-</table>
107-
10868## Проверка типов данных (Watch/Hint)
10969
110-<table>
111-
112-<tr valign="top">
113-
114-<td>
115-
11670### Строки
11771
118-</td>
119-
120-<td>
121-
12272GDB не знает тип данных строк Паскаля. Информация о типе, которую возвращает GDB, в настоящее время не позволяет IDE различать PChar (индекс равен 0) и строку (индекс равен 1).
12373
12474В результате "mystring\[10\]" может быть 10-ым символом в строке или 11-м в PChar
12575
12676Поскольку среда IDE не может быть уверена, какая из них применима, она покажет оба варианта. 2 результата будут иметь префикс String/PChar.
12777
128-</td>
129-
130-</tr>
131-
132-<tr valign="top">
133-
134-<td>
135-
13678### Свойства
13779
138-</td>
139-
140-<td>
141-
14280В настоящее время отладчик не поддерживает выполнение каких-либо методов. Поэтому могут быть проверены только те свойства, которые относятся непосредственно к переменной. (Это работает только при использовании dwarf).
14381
14482``` pascal
14583TFoo = Class
14684private
14785 FBar: Integer;
14886 function GetValue: Integer;
14987public
15088 property Bar: Integer read FBar; // Может быть проверено (если используется Dwarf)
15189 property Value: Integer read GetValue; // *Не* может быть проверен
15290end;
15391```
15492
155-</td>
156-
157-</tr>
158-
159-<tr valign="top">
160-
161-<td>
162-
16393### Вложенные процедуры / функции
16494
165-</td>
166-
167-<td>
168-
16995``` pascal
17096procedure SomeObject.Outer(NumText: string);
17197var
17298 OuterVarInScope: Integer;
17399
174100procedure Nested;
175101var
176102 I: Integer;
177103begin
178104 WriteLn(OuterVarInScope);
179105end;
180106
181107var
182108 OuterVarOutsideScope: Integer;
183109
184110begin
185111 Nested;
186112end;
187113```
188114
189115Если вы входите в «Nested», то IDE позволяет вам проверять переменные из обоих стековых фреймов.
190116
191117Это вы можете проверить: I, OuterVarInScope, NumText (без необходимости изменять текущий фрейм стека, в окне стека)
192118
193119Однако есть несколько оговорок:
194120
195121Вы также можете проверить: OuterVarOutsideScope. Это против правил определения границ Паскаля. Это имеет значение, только если у вас есть несколько вложенных уровней, и все они содержат переменную с тем же именем, но область видимости Паскаля скрыла бы переменную из среднего фрейма. Тогда вы увидите неправильное значение.
196122
197123Вы не можете оценить операторы по 2 фреймам: «OuterVarnScope-I» не работает.
198124
199125> **Warning:** Вы можете увидеть неправильное значение. Если в любом другом модуле есть глобальная (или иным образом видимая для правил области действия GDB) переменная с тем же именем, что и локальная переменная из внешнего фрейма, будет показана эта глобальная переменная. Там нет никакого предупреждения для этого. Безопасным способом является явный выбор внешнего стекового фрейма, в котором определен локальный var, и проверка значения.
200126
201-</td>
202-
203-</tr>
204-
205-<tr valign="top">
206-
207-<td>
208-
209127### Массивы
210128
211-</td>
212-
213-<td>
214-
215129``` pascal
216130array [x..y] of Integer;
217131```
218132
219133показывает как символы, а не int. Только GDB 7.2 или выше, кажется, справиться с этим правильно.
220134
221135Кроме того, могут возникнуть проблемы при использовании массивов (неназванных) записей.
222136
223137Динамические массивы будут показывать только ограниченный объем своих данных. Начиная с Lazarus 1.1, предел может быть указан.
224138
225-</td>
226-
227-</tr>
228-
229-<table>
230-
231139Если значения Watches/Hint отображаются некорректно, отключите REGVARS. Установите -OoNOREGVAR в «Параметрах пользователя».
232140
233141## Указание GDB вида сборки
234142
235143GDB позволяет указать вид сборки (стиль Intel или AT&T), который будет использоваться при отображении кода сборки. Если кто-то хочет перейти на конкретный вариант, это можно изменить в свойстве AssemblerStyle в параметрах отладчика Lazarus для GDB (функция доступна в Lazarus 2.0). Альтернативно (и единственный способ добиться этого внутри Lazarus в более старых версиях до Lazarus 2.0) можно указать эту опцию, передав команду *set disassembly-flavor* в [Debugger_Startup_options](/wiki-images/5/5d/Media%3ADbg_setup_options2.png). Можно использовать несколько вариантов синтаксиса (в зависимости от версии GDB), некоторые из которых показаны ниже:
236144
237145` -ex "set disassembly-flavor intel"`\
238146` --eval-command="set disassembly-flavor intel"`\
239147` -eval-command="set disassembly-flavor intel"`\
240148` --eval-command "set disassembly-flavor intel"`
241149
242150Обратите внимание, что может потребоваться сбросить отладчик *(Run \| Reset Debugger)* перед загрузкой GDB с новой настройкой.
243151
244152# Windows
245153
246154## Консольный вывод для GUI-приложений
247155
248156В Windows в среде IDE нет окна «Отладчик - вывод на консоль». Это потому, что консольные приложения открывают свое собственное окно консоли. Приложения с графическим интерфейсом по умолчанию не имеют консоли. Чтобы иметь консоль для приложения с графическим интерфейсом, необходимо изменить настройки компилятора (Project options(Параметры проекта) / Compiler Options(Параметры компилятора) / Config and Target(Настройка и целевая платформа) / Win32 Gui Application(Графическое приложение Win32): -WC / -WG)
249157
250158## Отладка приложений с правами Администратора
251159
252160В Windows Vista+ в разделе Project Options(Параметры проекта) при установке разрешений в файле манифеста для программы «от имени Администратора» программа будет запускаться с правами администратора. Если ваша IDE запущена не от имени Администратора, отладка будет запускаться нормально, программа будет отображаться в списке задач, но ее графический интерфейс не будет отображаться.
253161
254162Поэтому имейте в виду, что вы должны сопоставить уровень привилегий между IDE (и gdb) и приложением, которое необходимо отладить.
255163
256164# Win 64 bit
257165
258166- Требуется Lazarus 1.0+ (с FPC 2.6+)
259167- Рекомендуется использовать dwarf
260168
261169## Использование 32-битного Lazarus на 64-битной Windows
262170
263171В качестве альтернативы можно отлаживать приложения как 32-разрядные приложения (используя 32-разрядную версию GDB). После успешной отладки:
264172
265173- приложение может быть кросс-скомпилировано до 64 бит или
266174- можно использовать 2-ую установку Lazarus (используя другую конфигурационную опцию --primary-config-path из 32-битной Lazarus)
267175
268176При установке 32-битного Lazarus убедитесь, что вы изменили конфигурацию, чтобы использовались правильные 32-битные FPC и GDB.
269177
270178## Больше проблем и решений Win 64 bit
271179
272180См. также <http://forum.lazarus.freepascal.org/index.php/topic,13188.0/topicseen.html>
273181
274182# Win CE
275183
276184## Отладчик не находит никаких исходных файлов
277185
278186Меню: "Tools"(Сервис) Страница: "Debugger"/"Generic" (Отладчик/Общее) Поле: "Additional search path" (Дополнительный путь поиска)
279187
280188Введите в это поле букву вашего каталога проекта.
281189
282190# Linux
283191
284192## Известные проблемы
285193
286194- При использовании старой версии GDB могут возникнуть проблемы, по крайней мере, на некоторых процессорах (например, SPARC, с GDB 6.4, поставляемой Debian "Etch"). В частности, фоновые потоки могут блокироваться, даже если программа работает нормально автономно.
287195- Если ваша программа блокируется при запуске, перейдите в Tools(Сервис) / Options(Настройки) / Debugger(Отладчик) / General(Общее) и установите `DisableLoadSymbolsForLibraries=True`
288196
289197# macOS
290198
291199Под macOS вы обычно устанавливаете GDB с инструментами разработчика Apple. Версия GDB, доступная на момент написания, - 6.3.50.
292200
293201Этот раздел - первый подход к сбору информации об известных проблемах и обходных путях. Информация, представленная здесь, во многом зависит от отзывов пользователей macOS.
294202
295203Начиная с Lazarus 2.0, в среде IDE имеется отладчик на основе LLDB. Отладчик на основе GDB также может использоваться, но требует много работы по сборке и подписи кода GDB.
296204
297205## Известные проблемы (GDB)
298206
299207### Отладка 32-битного приложения на 64-битной архитектуре
300208
301209IЭто возможно, а иногда и необходимо отладить 32-битный exe-файл в 64-битной системе.
302210
303211Это возможно только с Lazarus 0.9.29 rev 28640 и выше.
304212
305213### TimeOuts (только 64 бит)
306214
307215Похоже, что некоторые команды некорректно (или не полностью) обрабатываются GDB 6.3.50. Обычно GDB заканчивает каждую команду запросом "\<gdb\>" для следующей команды. Но версия, предоставляемая Apple, иногда не может этого сделать. В этом случае IDE придется использовать тайм-аут, чтобы избежать бесконечного ожидания.
308216
309217Это было замечено с:
310218
311219- Определенными выражениями Watch (по крайней мере, если наблюдаемая переменная не была доступна в текущей выбранной функции)
312220- Обработкой исключений
313221- Вставленными точками останова (окончание последнего модуля / отсутствие кода)
314222
315223Это не может быть гарантировано:
316224
317225- что GDB не будет позже возвращать некоторые результаты от такой команды
318226- что внутреннее состояние GDB все еще действительно
319227
320228Приглашение, отображаемое для тайм-аутов, может быть отключено в конфигурации отладчика:
321229
322230Warn On Timeout
323231True/False. Автопродолжение, после тайм-аута не показывается предупреждение.
324232
325233TimeOutForEval
326234Задайте \[интервал\] в миллисекундах, как долго не срабатывает обнаружение тайм-аута (само обнаружение может занять некоторое время).
327235
328236Возможно, вам придется «СБРОСИТЬ» отладчик после внесения этих изменений.
329237
330238Больше информации смотрите здесь:
331239
332240- [<http://bugs.freepascal.org/view.php?id=19262#c47944>](http://bugs.freepascal.org/view.php?id=19262#c47944)
333241- <http://bugs.freepascal.org/view.php?id=21653>
334242
335243Альтернативное решение, похоже, заключается в использовании более новой версии GDB (см. ниже).
336244
337245### Hardware exceptions under macOS
338246
339247When a hardware exception occurs under macOS, such as an invalid pointer access (SIGSEGV) or an integer division-by-zero on Intel processors, the debugger will catch this exception at the Mach level. Normally, the system translates these Mach exceptions into Unix-style signals where the FPC run time library handles them. The debugger is however unable to propagate Mach exceptions in this way.
340248
341249The practical upshot is that it is impossible under macOS to continue a program in the debugger once a hardware exception has been triggered. This is not FPC-specific, and cannot be fixed by us.
342250
343251## Использование альтернативных отладчиков (GDB)
344252
345253Вы можете установить GDB 7.1 (или более позднюю версию), используя MacPorts, fink или homebrew.
346254
347255Было замечено следующее:
348256
349257- GDB 7.1, похоже, имеет проблемы с отладочной информацией \[режима\] stabs из fpc.
350258
351259
352-<b>Убедитесь, что вы выбрали <u>"generate dwarf debug information (-gw)"</u>(генерировать отладочную информацию dwarf (-gw)) на прилагаемой вкладке <u>project options</u>(параметры проекта)</b>
260+Убедитесь, что вы выбрали "generate dwarf debug information (-gw)"(генерировать отладочную информацию dwarf (-gw)) на прилагаемой вкладке project options(параметры проекта)
353261
354262**Следите за предупреждениями компоновщика "unknown stabs"**
355263
356264
357265Если у вас все еще есть проблемы, убедитесь, что никакой код вообще не скомпилирован \[в режиме\] stabs. Ваш LCL может содержать \[код, скомпилированный в режиме\] stabs, и это закончится в вашем приложении, даже если вы скомпилируете приложение с -gw. Поэтому вам, возможно, придется перекомпилировать LCL с помощью -gw (или без какой-либо отладочной информации). То же самое для любого другого модуля, пакета, RTL, ...., которые могут иметь \[код, скомпилированный в режиме\] stabs.
358266
359267**Даже при соблюдении этих правил GDB не всегда работает с приложениями, скомпилированными в fpc.**
360268
361269Эти наблюдения могут быть неполными или неправильными, пожалуйста, обновите их, если у вас есть дополнительная информация.
362270
363271Lazarus версии от 1.0 до 1.0.12
364272
365273В настройках отладчика сконфигурируйте
366274
367275` EncodeCurrentDirPath = gdfeNone`\
368276` EncodeExeFilename = gdfeNone`
369277
370-И вы должны использовать <u>"run param"</u>, чтобы указать фактический исполняемый файл внутри пакета приложения (project.app/Content/MacOS/project или аналогичный)
278+И вы должны использовать "run param", чтобы указать фактический исполняемый файл внутри пакета приложения (project.app/Content/MacOS/project или аналогичный)
371279
372280В Lazarus версии от 1.0.14 до 1.2 и выше эти шаги больше не требуются.
373281
374282## Xcode 5
375283
376284Начиная с Mavericks 10.9, Xcode 5 больше не устанавливает GDB по умолчанию и не \[делает его\] глобальным.
377285
378286- Для 10.9 вы можете установить старый Xcode 4 параллельно. Это не поддерживается Apple, поэтому он может порвать с одной из следующих версий.
379287
380288- Вы можете скомпилировать и установить GDB. См. [[GDB on OS X Mavericks and Xcode 5]].
381289
382290См., пожалуйста, [issue 25157 on mantis](http://bugs.freepascal.org/view.php?id=25157)
383291
384292- <http://forum.lazarus.freepascal.org/index.php/topic,22529.0.html> - об установке Xcode 4.3
385293- <http://forum.lazarus.freepascal.org/index.php/topic,22328.0.html> - установка gdb
386294
387295Тема "\[Lazarus\] Help: Проблемы macOS" на
388296
389297- <http://lists.lazarus.freepascal.org/pipermail/lazarus/2013-November/thread.html#84126>
390298- <http://lists.lazarus.freepascal.org/pipermail/lazarus/2013-October/thread.html#84095>
391299
392300## Замороженный UI с GDB
393301
394302Чтобы запустить программу из оболочки, вам нужно запустить «open \<program1\>.app», прямой доступ к ./program1 не даст вам доступа к пользовательскому интерфейсу. Чтобы заставить GDB работать изнутри вашей IDE, вы должны указать этот путь в качестве параметра run. Выберите в меню Run \> Run parameter и введите полный путь к хост-приложению. Например, /User/\<yourid\>/sources/myproject/project1.app/Content/MacOS/project1
395303
396304## Ссылки
397305
398306- macOS поставляется с множеством полезных инструментов для отладки и профилирования. Просто запустите /Developer/Applications/Instruments.app и попробуйте их.
399307
400308# FreeBSD
401309
402310GDB, предоставляемый системой, является древним (версия 6.1.1 во FreeBSD 9) и не очень хорошо работает с Lazarus.
403311
404312Вы можете установить более новый GDB из дерева портов, например,
405313
406314``` bash
407315cd /usr/ports/devel/gdb
408316make -DBATCH install clean
409317```
410318
411319Новый GDB находится в /usr/local/bin/gdb
412320
413321# Использование переведенного GDB (неанглийские сообщения от GDB)
414322
415323- Это относится только к Lazarus *до* 1.2 или *до* 1.0.14.\
416324 В этом больше нет необходимости.
417325
418326IDE ожидает ответов на английском языке. Если GDB переведен, это может повлиять на то, насколько хорошо IDE может его использовать.
419327
420328Во многих случаях это все еще будет работать, но с ограничениями, такими как:
421329
422330- Нет сообщений или класса для исключений
423331- Нет живого обновления потоков, пока приложение работает
424332- Сообщение об ошибке отладчика после остановки приложения (в конце отладки)
425333- другое ...
426334
427335Пожалуйста, прочитайте всю ветку: [[http://forum.lazarus.freepascal.org/index.php/topic,20756.msg120720 http://forum.lazarus.freepascal.org/index.php/topic,20756.msg120720]]
428336
429337Попробуйте запустить lazarus с
430338
431339` export LANG=en_US.UTF-8`\
432340` lazarus`
433341
434342# Известные проблемы/ошибки, о которых сообщает IDE
435343
436-<table>
437-
438-<tr valign="top">
439-
440-<th style="text-align:left">
441-
442344Сообщения    
443345
444-</th>
445-
446-<th style="text-align:left">
447-
448346OС
449347
450-</th>
451-
452-<th style="text-align:left">
453-
454348Описание
455349
456-</th>
457-
458-<th style="text-align:left; min-width:40%">
459-
460350 
461351
462-</th>
463-
464-</tr>
465-
466-<tr valign="top">
467-
468-<td colspan="3">
469-
470352## During startup program exited normally
471353
472-</td>
473-
474-<td>
475-
476354 
477355
478-</td>
479-
480-</tr>
481-
482-<tr valign="top">
483-
484-<td>
485-
486356 
487357
488-</td>
489-
490-<td>
491-
492358**Все**
493359
494-</td>
495-
496-<td colspan="2">
497-
498360В редких случаях в среде IDE появляется сообщение "During startup program exited normally"(Во время запуска программа завершается нормально). Это сообщение появляется, когда отлаженное приложение закрыто. Если это произойдет, никакие точки останова в приложении не будут запущены, и приложение будет работать так, как если бы не было отладчика.
499361
500362Эта ошибка может произойти по разным причинам. Есть как минимум 2 известных:
501363
502364- не зависящий от позиции exe (PIE): GDB не может переместить определенные точки останова, которые Lazarus использует для запуска exe (это происходит до того, как будут установлены какие-либо точки останова пользователя)
503365- определенные библиотеки dll/so, которые определяют те же символы, что и основной exe.
504366
505367Причин может быть еще больше. Второе происходит только при повторных запусках отладчика.
506368
507369IDE пытается обойти это, но это не всегда удается. Вполне вероятно, что в тех случаях, когда в данный момент происходит сбой, это необходимо обойти с помощью пользовательского набора настроек (см. ниже).
508370
509371Даже если вы можете обойти это, рассмотрите возможность отправки файла журнала: [[GDB Debugger Tips/ru|логирование информации для сеанса отладки]]
510372
511-<b>Способы обхода: (все на странице options / debugger)</b>
373+Способы обхода: (все на странице options / debugger)
512374
513375- Только в случае 2: [[GDB Debugger Tips/ru|перестал работать gdb.exe]]
514376
515377Lazarus 1.2.2 и более ранние версии
516378перейдите к параметрам отладчика и в поле «debugger_startup_options» введите:\
517379--eval-command="set auto-solib-add off"
518380
519381Lazarus 1.2.4 и выше
520382перейдите к параметрам отладчика и установите для поля "DisableLoadSymbolsForLibraries" значение "True".
521383
522384Это можно использовать, только если вы не отлаживаете библиотеки (если вы не написали свою собственную библиотеку)
523385
524386- Только в случае 2: проверьте "reset debugger after each run"(сбрасывать отладчик после каждого запуска)
525387
526388Это добавляет очень небольшое увеличение времени, необходимого для запуска отладчика, так как GDB должен каждый раз перезагружаться.
527389
528390- Во всех случаях:
529391
530392Попробуйте любое из значений, доступных для «InternalStartBreak» (в сетке свойств параметров)
531393
532-</td>
533-
534-</tr>
535-
536-<tr valign="top">
537-
538-<td colspan="3">
539-
540394## SIGFPE
541395
542-</td>
543-
544-<td>
545-
546396 
547397
548-</td>
549-
550-</tr>
551-
552-<tr valign="top">
553-
554-<td>
555-
556398 
557399
558-</td>
559-
560-<td>
561-
562400**Все**
563401
564-</td>
565-
566-<td colspan="2">
567-
568402SIGFPE является исключением операций с плавающей точкой.
569403
570404Источник: [[http://forum.lazarus.freepascal.org/index.php/topic,21586.0.html forum thread]]
571405
572406Исключения SIGFPE возникают в следующей инструкции FPU; поэтому строка ошибки, которую вы получаете от Lazarus, может быть отключена/неверна.
573407
574408Delphi, а, следовательно, и Freepascal, имеют нестандартную FPEMask. Многие библиотеки C не используют исключения для проверки проблем FPU, но проверяют состояние FPU.
575409
576410Обходной путь: попробуйте изменить маску с помощью [SetExceptionMask](http://www.freepascal.org/docs-html/rtl/math/setexceptionmask.html) как можно раньше в вашей программе:
577411
578412``` pascal
579413uses math;
580414...
581415 SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide,
582416 exOverflow, exUnderflow, exPrecision])
583417```
584418
585419Если вы считаете, что в коде FPC что-то не так, вы можете использовать директиву [\$ SAFEFPUEXCEPTIONS](http://www.freepascal.org/docs-html/prog/progsu69.html). Это добавит FWAIT после каждого сохранения значения FPU в памяти. Большинство операций FPC с плавающей запятой и двойных операций заканчиваются сохранением результата где-то в памяти, поэтому в результате отладчик останавливается на правильной строке FPC. FWAIT - недопустимая задача для FPU, но она вызовет немедленное возникновение исключения, а не где-то дальше по вашему коду. Это не делается по умолчанию, потому что это сильно замедляет операции с плавающей запятой.
586420
587-</td>
588-
589-</tr>
590-
591-<tr valign="top">
592-
593-<td colspan="3">
594-
595421## Error 193 (Error creating process / Exe not found)
596422
597-</td>
598-
599-<td>
600-
601423 
602424
603-</td>
604-
605-</tr>
606-
607-<tr valign="top">
608-
609-<td>
610-
611425 
612426
613-</td>
614-
615-<td>
616-
617427**Windows**
618428
619-</td>
620-
621-<td colspan="2">
622-
623429Подробнее см. [здесь](http://bugs.freepascal.org/view.php?id=18238).
624430
625431Эта проблема наблюдалась в Win XP и, по-видимому, вызвана самой Windows. Проблема возникает, если путь к вашему приложению имеет пробел, и существует второй путь/файл, имя которого совпадает с частью пути перед пробелом, например:
626432
627433
628434Ваше приложение: C:\test folder\project1.exe
629435
630436Какой-то файл: C:\test
631437
632-</td>
633-
634-</tr>
635-
636-<tr valign="top">
637-
638-<td colspan="3">
639-
640438## SigSegV - даже с новым пустым приложением
641439
642-</td>
643-
644-<td>
645-
646440 
647441
648-</td>
649-
650-</tr>
651-
652-<tr valign="top">
653-
654-<td>
655-
656442 
657443
658-</td>
659-
660-<td>
661-
662444**Windows**
663445
664-</td>
665-
666-<td colspan="2">
667-
668446Примечание
669-в <u>большинстве</u> случаев SigSegV - просто ошибка в вашем коде.
447+в большинстве случаев SigSegV - просто ошибка в вашем коде.
670448
671449Нижеследующее применимо только \[в том случае\], если вы получаете SigSegv даже с новым пустым приложением (пустая форма и никаких изменений, внесенных в unit1).
672450
673451Иногда SigSegV может быть вызван несовместимостью между GDB и некоторыми другими продуктами. Не известно, является ли это проблемой GDB или вызвано другим продуктом. Нет никаких признаков того, что какой-либо из перечисленных продуктов каким-либо образом виноват. Предоставленная информация может относиться только к некоторым версиям названных продуктов:
674452
675453Comodo firewall
676454[Lazarus cant run with comodo firewall](http://forum.lazarus.freepascal.org/index.php/topic,7065.msg60621.html#msg60621)
677455
678456BitDefender
679457включен режим игры
680458
681-</td>
682-
683-</tr>
684-
685-<tr valign="top">
686-
687-<td colspan="3">
688-
689459## SigSegV - и продолжить отладку
690460
691-</td>
692-
693-<td>
694-
695461 
696462
697-</td>
698-
699-</tr>
700-
701-<tr valign="top">
702-
703-<td>
704-
705463 
706464
707-</td>
708-
709-<td>
710-
711465**Windows**, **Mac**
712466
713-</td>
714-
715-<td colspan="2">
716-
717467[Bug 10004 - gdb cannot continue after SIGFPE or SIGSEGV happen on windows](http://sourceware.org/bugzilla/show_bug.cgi?id=10004)
718468
719469[Workaround for SIGFPE bug in GDB for Windows?](http://forum.lazarus.freepascal.org/index.php/topic,18121.msg101798.html#msg101798)
720470
721-</td>
722-
723-</tr>
724-
725-<tr valign="top">
726-
727-<td colspan="3">
728-
729471## На Windows Open/Save/File или System Dialog вызывает сбой GDB
730472
731473См. следующую запись [[GDB Debugger Tips/ru|перестал работать gdb.exe]]
732474
733475Или загрузите "alternative GDB"(альтернативный GDB) 7.7.1 (Win32) с сайта Lazarus SourceForge.
734476
735477## "Step over" шаги внутри функции (Win 64)
736478
737-</td>
738-
739-<td>
740-
741479 
742480
743-</td>
744-
745-</tr>
746-
747-<tr valign="top">
748-
749-<td>
750-
751481 
752482
753-</td>
754-
755-<td>
756-
757483**Windows 64**
758484
759-</td>
760-
761-<td colspan="2">
762-
763485Иногда нажатие клавиши F8 не переходит \[мимо\] функции, а входит в нее.
764486
765487Можно продолжить с F8, и иногда GDB возвращается в вызывающую функцию после 1-го или 2-ого дальнейших шагов (переступая через оставшуюся часть функции).
766488
767489В Lazarus 2.0 обходной путь был добавлен, но его необходимо включить. Перейдите в Tools(Сервис) \> Options(Настройки) \> Debugger(Отладчик) и включите (в сетке свойств) «FixIncorrectStepOver».
768490
769-<tr valign="top">
770-
771-<td colspan="3">
772-
773491## Перестал работать gdb.exe
774492
775-</td>
776-
777-<td>
778-
779493 
780494
781-</td>
782-
783-</tr>
784-
785-<tr valign="top">
786-
787-<td>
788-
789495 
790496
791-</td>
792-
793-<td>
794-
795497**Windows**
796498
797-</td>
798-
799-<td colspan="2">
800-
801499Поврежден сам GDB. Это будет связано с ошибкой в GDB и может быть невозможно исправить в Lazarus. Тем не менее, возможно, стоит отправить информацию (см. Раздел «Сообщения об ошибках» ниже). Возможно, Лазарус может избежать вызова неисправной функции.
802500
803501Есть одна уже известная ситуация. GDB (от 6,6 до 7,4 (последний на момент тестирования)) может аварийно завершить работу во время запуска вашего приложения или сразу после его остановки. Это происходит во время загрузки библиотек (DLL) для вашего приложения (смотрите окно «[[IDE Window: Debug Output/ru|Debug output]]»).
804502
805503Lazarus 1.2.2 и более ранние версии
806504перейдите к параметрам отладчика и в поле «debugger_startup_options» введите:\
807505--eval-command="set auto-solib-add off"
808506
809507Lazarus 1.2.4 и выше
810508перейдите к параметрам отладчика и установите для поля «DisableLoadSymbolsForLibraries» значение «True».
811509
812510Это можно использовать, только если вы не отлаживаете в библиотеках (если вы не написали свою собственную библиотеку) ![](/wiki-images/a/a9/Gdb_start_opt_nolib.png)
813511
814-</td>
815-
816-</tr>
817-
818-<tr valign="top">
819-
820-<td colspan="3">
821-
822512## internal-error: clear_dangling_display_expressions
823513
824-</td>
825-
826-<td>
827-
828514 
829515
830-</td>
831-
832-</tr>
833-
834-<tr valign="top">
835-
836-<td>
837-
838516 
839517
840-</td>
841-
842-<td>
843-
844518**Windows, может быть другая ОС**
845519
846-</td>
847-
848-<td colspan="2">
849-
850520В конце сеанса отладки отладчик сообщает:
851521
852522`internal-error: clear_dangling_display_expressions: `\
853523`` Assertion `objfile->pspace == solib->pspace' failed. ``
854524
855525Это ошибка в GDB, и иногда решается так:
856526
857527Lazarus 1.2.2 и более ранние версии
858528перейдите к параметрам отладчика и в поле "debugger_startup_options" введите:
859529
860530`--eval-command="set auto-solib-add off" `
861531
862532Lazarus 1.2.4 и выше
863533перейдите к параметрам отладчика и установите для поля "DisableLoadSymbolsForLibraries" значение "True"
864534
865535Это можно использовать, только если вы не отлаживаете библиотеку (если вы не пишете свою собственную библиотеку)
866536
867-</td>
868-
869-</tr>
870-
871-<tr valign="top">
872-
873-<td colspan="3">
874-
875537## "PC register is not available" ("SuspendThread failed. (winerr 5)")
876538
877-</td>
878-
879-<td>
880-
881539 
882540
883-</td>
884-
885-</tr>
886-
887-<tr valign="top">
888-
889-<td>
890-
891541 
892542
893-</td>
894-
895-<td>
896-
897543**Windows**
898544
899-</td>
900-
901-<td colspan="2">
902-
903545GDB может упасть с этим сообщением. Это связано с [Bug 14018](http://sourceware.org/bugzilla/show_bug.cgi?id=14018). Если вы получаете эту проблему, вы можете при желании перейти с GDB 7.4 на GDB 7.2
904546
905-</td>
906-
907-</tr>
908-
909-<tr valign="top">
910-
911-<td colspan="3">
912-
913547## Can not insert breakpoint (Не могу вставить точку останова)
914548
915-</td>
916-
917-<td>
918-
919549 
920550
921-</td>
922-
923-</tr>
924-
925-<tr valign="top">
926-
927-<td>
928-
929551 
930552
931-</td>
932-
933-<td>
934-
935553**Все**
936554
937-</td>
938-
939-<td colspan="2">
940-
941-<b>Для точек останова с отрицательными числами:</b> См. сюда, плз: [How to reset gdb settings](http://forum.lazarus.freepascal.org/index.php/topic,10317.msg121818.html#msg121818)
555+Для точек останова с отрицательными числами: См. сюда, плз: [How to reset gdb settings](http://forum.lazarus.freepascal.org/index.php/topic,10317.msg121818.html#msg121818)
942556
943557Вы также можете попробовать:
944558
945559Lazarus 1.2.2 и более ранние версии
946560перейдите к параметрам отладчика и в поле «debugger_startup_options» введите:\
947561--eval-command="set auto-solib-add off"
948562
949563Lazarus 1.2.4 и выше
950564перейдите к параметрам отладчика и установите для поля «DisableLoadSymbolsForLibraries» значение «True».
951565
952566Это можно использовать, только если вы не отлаживаете библиотеку (если вы не пишете свою собственную библиотеку)
953567
954-<b>Для точек останова с положительными числами</b> Это может произойти из-за неправильных [[Debugger Setup/ru|настроек отладчика]]. Убедитесь, что интеллектуальные ссылки отключены. Обычно это означает, что точка останова находится в процедуре, которая не вызывается и не включается в ваш исполняемый файл.
568+Для точек останова с положительными числами Это может произойти из-за неправильных [[Debugger Setup/ru|настроек отладчика]]. Убедитесь, что интеллектуальные ссылки отключены. Обычно это означает, что точка останова находится в процедуре, которая не вызывается и не включается в ваш исполняемый файл.
955569
956570В Windows, если это происходит несмотря на правильную настройку, добавьте -Xe (внешний компоновщик) к пользовательским параметрам.
957571
958-</td>
959-
960-</tr>
961-
962-</table>
963-
964572# Сообщения об ошибках
965573
966574- Вы проверили свои [[Debugger Setup/ru|настройки отладчика]]?
967575- Вы пробовали \[переключать в режим\] Dwarf и Stabs
968576
969577## Проверьте существующие отчеты
970578
971579Пожалуйста, проверьте каждую из следующих ссылок
972580
973581- [Search Mantis for category "debugger"](http://bugs.freepascal.org/search.php?project_id=0&category=Debugger&status_id%5B%5D=10&status_id%5B%5D=20&status_id%5B%5D=30&status_id%5B%5D=40&status_id%5B%5D=50&status_id%5B%5D=80&sticky_issues=on&sortby=last_updated&dir=DESC&per_page=250&hide_status_id=-2)
974582- [Search Mantis for text "debugger"](http://bugs.freepascal.org/search.php?project_id=1&search=debugger&category%5B%5D=-&category%5B%5D=Compiler&category%5B%5D=Converter&category%5B%5D=Custom+Drawn&category%5B%5D=Database&category%5B%5D=Database+Components&category%5B%5D=Documentation&category%5B%5D=FCL&category%5B%5D=FPSpreadsheet&category%5B%5D=FV&category%5B%5D=Free+Vision&category%5B%5D=IDE&category%5B%5D=Installer&category%5B%5D=LCL&category%5B%5D=LazDataDesktop&category%5B%5D=LazReport&category%5B%5D=Misc&category%5B%5D=OnGuard&category%5B%5D=Other&category%5B%5D=Packages&category%5B%5D=Patch&category%5B%5D=Printer&category%5B%5D=RTL&category%5B%5D=TAChart&category%5B%5D=Utilities&category%5B%5D=Virtual+Treeview&category%5B%5D=Web+site&category%5B%5D=Website&category%5B%5D=Widgetset&category%5B%5D=glscene&category%5B%5D=lNet&category%5B%5D=rx&status_id%5B%5D=10&status_id%5B%5D=20&status_id%5B%5D=30&status_id%5B%5D=40&status_id%5B%5D=50&status_id%5B%5D=80&sticky_issues=on&sortby=last_updated&dir=DESC&per_page=250&hide_status_id=-2)
975583- [Search Mantis for text "gdb"](http://bugs.freepascal.org/search.php?project_id=1&search=gdb&category%5B%5D=-&category%5B%5D=Compiler&category%5B%5D=Converter&category%5B%5D=Custom+Drawn&category%5B%5D=Database&category%5B%5D=Database+Components&category%5B%5D=Documentation&category%5B%5D=FCL&category%5B%5D=FPSpreadsheet&category%5B%5D=FV&category%5B%5D=Free+Vision&category%5B%5D=IDE&category%5B%5D=Installer&category%5B%5D=LCL&category%5B%5D=LazDataDesktop&category%5B%5D=LazReport&category%5B%5D=Misc&category%5B%5D=OnGuard&category%5B%5D=Other&category%5B%5D=Packages&category%5B%5D=Patch&category%5B%5D=Printer&category%5B%5D=RTL&category%5B%5D=TAChart&category%5B%5D=Utilities&category%5B%5D=Virtual+Treeview&category%5B%5D=Web+site&category%5B%5D=Website&category%5B%5D=Widgetset&category%5B%5D=glscene&category%5B%5D=lNet&category%5B%5D=rx&status_id%5B%5D=10&status_id%5B%5D=20&status_id%5B%5D=30&status_id%5B%5D=40&status_id%5B%5D=50&status_id%5B%5D=80&sticky_issues=on&sortby=last_updated&dir=DESC&per_page=250&hide_status_id=-2)
976584- [Search Mantis for text "dwarf"](http://bugs.freepascal.org/search.php?project_id=0&search=dwarf&category%5B%5D=-&category%5B%5D=Compiler&category%5B%5D=Converter&category%5B%5D=Custom+Drawn&category%5B%5D=Database&category%5B%5D=Database+Components&category%5B%5D=Documentation&category%5B%5D=FCL&category%5B%5D=FPSpreadsheet&category%5B%5D=FV&category%5B%5D=Free+Vision&category%5B%5D=IDE&category%5B%5D=Installer&category%5B%5D=LCL&category%5B%5D=LazDataDesktop&category%5B%5D=LazReport&category%5B%5D=Misc&category%5B%5D=OnGuard&category%5B%5D=Other&category%5B%5D=Packages&category%5B%5D=Patch&category%5B%5D=Printer&category%5B%5D=RTL&category%5B%5D=TAChart&category%5B%5D=Utilities&category%5B%5D=Virtual+Treeview&category%5B%5D=Web+site&category%5B%5D=Website&category%5B%5D=Widgetset&category%5B%5D=glscene&category%5B%5D=lNet&category%5B%5D=rx&status_id%5B%5D=10&status_id%5B%5D=20&status_id%5B%5D=30&status_id%5B%5D=40&status_id%5B%5D=50&status_id%5B%5D=80&sticky_issues=on&sortby=last_updated&dir=DESC&per_page=250&hide_status_id=-2)
977585- [Search Mantis for text "stabs"](http://bugs.freepascal.org/search.php?project_id=0&search=stabs&category%5B%5D=-&category%5B%5D=Compiler&category%5B%5D=Converter&category%5B%5D=Custom+Drawn&category%5B%5D=Database&category%5B%5D=Database+Components&category%5B%5D=Documentation&category%5B%5D=FCL&category%5B%5D=FPSpreadsheet&category%5B%5D=FV&category%5B%5D=Free+Vision&category%5B%5D=IDE&category%5B%5D=Installer&category%5B%5D=LCL&category%5B%5D=LazDataDesktop&category%5B%5D=LazReport&category%5B%5D=Misc&category%5B%5D=OnGuard&category%5B%5D=Other&category%5B%5D=Packages&category%5B%5D=Patch&category%5B%5D=Printer&category%5B%5D=RTL&category%5B%5D=TAChart&category%5B%5D=Utilities&category%5B%5D=Virtual+Treeview&category%5B%5D=Web+site&category%5B%5D=Website&category%5B%5D=Widgetset&category%5B%5D=glscene&category%5B%5D=lNet&category%5B%5D=rx&status_id%5B%5D=10&status_id%5B%5D=20&status_id%5B%5D=30&status_id%5B%5D=40&status_id%5B%5D=50&status_id%5B%5D=80&sticky_issues=on&sortby=last_updated&dir=DESC&per_page=250&hide_status_id=-2)
978586
979587### Баги в GDB
980588
981-<table class="wikitable">
982-
983-<tr valign="top">
984-
985-<th>
986-
987589Описание
988590
989-</th>
990-
991-<th>
992-
993591ОС
994592
995-</th>
996-
997-<th>
998-
999593GDB Version(s)
1000594
1001-</th>
1002-
1003-<th>
1004-
1005595Ссылка
1006596
1007-</th>
1008-
1009-</tr>
1010-
1011-<tr valign="top">
1012-
1013-<td>
1014-
1015597Падение на win64 с неправильными символами dwarf2
1016598
1017-</td>
1018-
1019-<td>
1020-
1021599win64
1022600
1023-</td>
1024-
1025-<td>
1026-
1027601GDB 7.4 (может быть и выше)
1028602
1029-</td>
1030-
1031-<td>
1032-
1033603<http://sourceware.org/bugzilla/show_bug.cgi?id=14014>
1034604
1035-</td>
1036-
1037-</tr>
1038-
1039-<tr valign="top">
1040-
1041-<td>
1042-
1043605Отладчик не видит переменные окружения, установленные в переменной окружения
1044606
1045-</td>
1046-
1047-<td>
1048-
1049607win
1050608
1051-</td>
1052-
1053-<td>
1054-
1055609Решено в GDB 7.4
1056610
1057-</td>
1058-
1059-<td>
1060-
1061611<http://sourceware.org/bugzilla/show_bug.cgi?id=10989>
1062612
1063-</td>
1064-
1065-</tr>
1066-
1067-<tr valign="top">
1068-
1069-<td>
1070-
1071613Win32 падает с ошибкой "winerr 5" (реестр ПК недоступен)\
1072614*очевидно* не проявляется от 7.0 до 7.2
1073615
1074-</td>
1075-
1076-<td>
1077-
1078616win
1079617
1080-</td>
1081-
1082-<td>
1083-
1084618GDB 7.3 и выше (может быть также в 6.x)\
1085619Кажется, должно быть исправлено в 7.7.1
1086620
1087-</td>
1088-
1089-<td>
1090-
1091621<http://sourceware.org/bugzilla/show_bug.cgi?id=14018>
1092622
1093-</td>
1094-
1095-</tr>
1096-
1097-<tr valign="top">
1098-
1099-<td>
1100-
1101623Неверный индекс массива с dwarf
1102624
1103-</td>
1104-
1105-<td>
1106-
1107625*
1108626
1109-</td>
1110-
1111-<td>
1112-
1113627GDB от 7.3 до 7.5 (может быть в 7.6.0)\
1114628исправлено в 7.6.1
1115629
1116-</td>
1117-
1118-<td>
1119-
1120630<http://sourceware.org/bugzilla/show_bug.cgi?id=15102>
1121631
1122-</td>
1123-
1124-</tr>
1125-
1126-<tr valign="top">
1127-
1128-<td>
1129-
1130632GDB падает, если пытается проверить или просмотреть строки ресурсов\
1131633протестировано только на win32, не известно только для других платформ, если используется dwarf
1132634
1133-</td>
1134-
1135-<td>
1136-
1137635*
1138636
1139-</td>
1140-
1141-<td>
1142-
1143637GDB от 7.0 до 7.2.xx
1144638
1145-</td>
1146-
1147-<td>
1148-
1149-</td>
1150-
1151-</tr>
1152-
1153-<tr valign="top">
1154-
1155-<td>
1156-
1157639Записи (особенно: указатель на запись) могут быть ошибочно приняты за classes/objects\
1158640Данные/значения отображаются корректно / ожидаются дальнейшие тесты\
1159641Это также влияет на способность проверять короткие строки shortstring
1160642
1161-</td>
1162-
1163-<td>
1164-
1165643*
1166644
1167-</td>
1168-
1169-<td>
1170-
1171645GDB 7.6.1 и выше (проверено и не работает до GDB 8.1)
1172646
1173-</td>
1174-
1175-<td>
1176-
1177647<https://sourceware.org/bugzilla/show_bug.cgi?id=16016>
1178648
1179-</td>
1180-
1181-</tr>
1182-
1183-<tr valign="top">
1184-
1185-<td>
1186-
1187649Объектные переменные (члены) методов текущего класса (self.xxx) не могут быть отслежены/проверены\
1188650Чтобы обойти, используйте верхний регистр или префикс в виде self.
1189651
1190-</td>
1191-
1192-<td>
1193-
1194652*
1195653
1196-</td>
1197-
1198-<td>
1199-
1200654GDB от 7.7 до 7.9.0 (включительно)\
1201655Обходной путь присутствует в Lazarus 1.4 и выше
1202656
1203-</td>
1204-
1205-<td>
1206-
1207657<https://sourceware.org/bugzilla/show_bug.cgi?id=17835>
1208658
1209-</td>
1210-
1211-</tr>
1212-
1213-<tr valign="top">
1214-
1215-<td>
1216-
1217659GDB не может продолжить работу после SIGFPE или SIGSEGV на Windows
1218660
1219-</td>
1220-
1221-<td>
1222-
1223661win
1224662
1225-</td>
1226-
1227-<td>
1228-
1229663*
1230664
1231-</td>
1232-
1233-<td>
1234-
1235665<https://sourceware.org/bugzilla/show_bug.cgi?id=10004>
1236666
1237-</td>
1238-
1239-</tr>
1240-
1241-<tr valign="top">
1242-
1243-<td>
1244-
1245667GDB усекает значения для "const x = qword(...)"
1246668
1247-</td>
1248-
1249-<td>
1250-
1251669Win х64\
1252670может быть и другие
1253671
1254-</td>
1255-
1256-<td>
1257-
1258672Исправлено в GDB 7.7 и выше, возможно, исправлено даже между 7.3 и 7.7
1259673
1260-</td>
1261-
1262-<td>
1263-
1264-</td>
1265-
1266-</tr>
1267-
1268-</table>
1269-
1270674### Проблемы с GDB 7.5.9 или 7.6
1271675
1272676Существуют различные сообщения (не подтвержденные) для разных платформ о сбоях в gdb 7.5.9 или 7.6.
1273677
1274678Настоятельно рекомендуется не использовать эти версии.
1275679
1276680- <http://bugs.freepascal.org/view.php?id=24401>
1277681- <http://forum.lazarus.freepascal.org/index.php/topic,20756.msg120842.html#msg120842>
1278682- <http://sourceware.org/bugzilla/show_bug.cgi?id=15453>
1279683
1280684## Create a new Report (GDB and LLDB)
1281685
1282686Если вы когда-либо в прошлом обновляли, изменяли, переустанавливали свой Lazarus, тогда, пожалуйста, проверьте диалоговое окно "Options"(Параметры) ("Environment"(Окружение) или меню "Tools"(Сервис)) для \[проверки\] версии используемых GDB и FPC. Они все еще могут указывать на старые настройки.
1283687
1284688### Основная информация
1285689
1286690- Ваша операционная система и версия
1287-- Ваш CPU (Intel, Power, ...) <b>х32 или х64</b>
691+- Ваш CPU (Intel, Power, ...) х32 или х64
1288692- Версия...
1289693 - Lazarus (последний стабильный релиз или ревизия SVN) (включите настройки, использующие перекомпиляцию LCL, пакетов или IDE (если используется пользовательская компиляция Lazarus))
1290694 - FPC, если отличается от значения по умолчанию. Пожалуйста, проверьте диалоговое окно "Options"(Настройки)("Environment"(Окружение) или меню "Tools"(Сервис))
1291695 - GDB, пожалуйста, проверьте диалоговое окно "Options"(Настройки)("Environment"(Окружение) или меню "Tools"(Сервис))
1292696- Настройки компилятора: (меню: "Project"(Проект), "Project Options"(Настройки проекта), указать все настройки, которые вы использовали)
1293697 - Страница "Compilation and linking"(Компиляция и компоновка)
1294698
1295699
1296700
1297701фрейм "Optimization levels"(Уровни оптимизации) (-O???): Level (-O1 / ...) Other (-OR -Ou -Os) (Пожалуйста, всегда тестируйте с отключенной оптимизацией, и -O1)
1298702
1299703фрейм "Linking"(Компоновка)
1300704
1301705
1302-Smart Link(Умная компоновка) (-XX); <b>Должно быть отключено(снята галочка)</b>
706+Smart Link(Умная компоновка) (-XX); Должно быть отключено(снята галочка)
1303707
1304708- - Страница "Debugging"(Отладка)
1305709
1306710
1307711
1308-фрейм "Debugger Info"(Отладочная информация): (-g -gl -gw) (<b>Пожалуйста, убедитесь, что используется как минимум -g или -gw</b>)
712+фрейм "Debugger Info"(Отладочная информация): (-g -gl -gw) (Пожалуйста, убедитесь, что используется как минимум -g или -gw)
1309713
1310714
1311-Strip Symbols from executable(Вырезать символы из исполняемого файла) (-Xs); <b>Должно быть отключено (снята галочка)</b>
715+Strip Symbols from executable(Вырезать символы из исполняемого файла) (-Xs); Должно быть отключено (снята галочка)
1312716
1313717### Логирование информации для сеанса отладки
1314718
1315719
1316720Запустите Lazarus со следующими параметрами:
1317721
1318722` --debug-log=LOG_FILE  --debug-enable=DBG_CMD_ECHO,DBG_STATE,DBG_DATA_MONITORS,DBGMI_QUEUE_DEBUG,DBGMI_TYPE_INFO,DBG_ERRORS`
1319723
1320724:;На Windows: вам нужно создать ярлык для Lazarus.exe (например, на рабочем столе) и отредактировать его свойства. Добавьте " --debug-log=C:\laz.log --debug-enable=..." в командную строку.
1321725
1322726:;На Linux: запустите Lazarus из оболочки и добавьте " --debug-log=/home/yourname/laz.log --debug-enable=..." в командную строку
1323727
1324728:;На macOS: запустите Lazarus из оболочки /path/to/lazarus/lazarus.app/Contents/MacOS/lazarus --debug-log=/path/to/yourfiles/laz.log --debug-enable=...
1325729
1326730Приложите файл журнала после воспроизведения ошибки.
1327731
1328-Если вы не можете сгенерировать файл журнала, попробуйте открыть окно "Debug output"(Вывод отладки) (из меню "View"(Вид) -\> "Ide Internals"(Внутреннее состояние IDE)). <b>Вы должны открыть его перед запуском приложения (по F9)</b>. А затем запустите ваше приложение. После возникновения ошибки скопируйте, заархивируйте и прикрепите содержимое окна "Debug output"(Вывод отладки).
732+Если вы не можете сгенерировать файл журнала, попробуйте открыть окно "Debug output"(Вывод отладки) (из меню "View"(Вид) -\> "Ide Internals"(Внутреннее состояние IDE)). Вы должны открыть его перед запуском приложения (по F9). А затем запустите ваше приложение. После возникновения ошибки скопируйте, заархивируйте и прикрепите содержимое окна "Debug output"(Вывод отладки).
1329733
1330734# Тестовые запуски
1331735
1332736Если вы используете другую версию GDB, вы можете запустить тестовый пример. Обратите внимание, что не все тесты имеют правильные ожидания для каждой возможной установки. Поэтому некоторые тесты могут не работать на некоторых системах.
1333737
1334738Тест отладчика находится в каталоге:
1335739
1336740- Lazarus 1.2.x: debugger\test\Gdbmi\\
1337741- Lazarus 1.3 и выше: components\lazdebuggergdbmi\test\\
1338742
1339743В приведенном ниже пути используется v.1.3. Если используется 1.2.x, замените его соответствующим образом.
1340744
1341745Одноразовая настройка
1342746
1343747Создайте каталог components\lazdebuggergdbmi\test\Logs: Необязательно, но помогает хранить результат теста в одном месте
1344748
1345749Создайте конфигурационные файлы: В каталоге components\lazdebuggergdbmi\test\\
1346750
1347751
1348752copy fpclist.txt.sample to fpclist.txt
1349753
1350754copy gdblist.txt.sample to gdblist.txt
1351755
1352756откройте 2 текстовых файла и отредактируйте путь к fpc/gdb, а также отредактируйте версию (тест может запускать разные тесты для разных версий). Можно указать более одного GDB/FPC
1353757
1354758Запуск теста
1355759
1356760- Откройте проект: components\lazdebuggergdbmi\test\TestGdbmi.lpi
1357761- Только для Lazarus 1.2.x: пересоберите IDE с опцией "Clean"(Очистить) (Меню "Tools"(Сервис) --\> "Configure build Lazarus"(Параметры сборки Lazarus) --\> снять галочку с "Restart after building IDE"(Перезапускать после сборки IDE)). Если это пропущено, компиляция проекта может завершиться неудачно. Если компиляция не удалась, ВСЕ *.ppu/*.o файлы в \[папке\] lazdebuggergdbmi\test должны быть удалены вручную.
1358762- Запустите проект (если тест не прошел, возможно, вам придется удалить файлы *.exe в components\lazdebuggergdbmi\test\TestApps)
1359763
1360764# Ссылки
1361765
1362766## Внешние ссылки
1363767
1364768- [Официальный сайт GDB](https://www.gnu.org/software/gdb/)
1365769
1366770## Экспериментальные отладчики в Паскале
1367771
1368772Это работа в процессе:
1369773
1370774- [duby](http://sourceforge.net/projects/duby/)
1371775- [fpdebug](https://github.com/graemeg/fpdebug) от Graeme Geldenhuys
1372776- [vdbg](https://code.google.com/p/vdbg/)
1373777- fpdebug in Lazarus/components/fpdebug and debugger/components/fpgdbmidebugger
1374778- [blog](http://lazarus-dev.blogspot.co.uk/2014/05/de-bug-wars-new-hope.html)
1375779- [[FpGdbmiDebugger]]
1376780
1377781- [How to register debugger from package?](http://forum.lazarus.freepascal.org/index.php/topic,22252.0.html)
1378782
1379783## Связанные темы форума
1380784
1381785- [Issues (crash) with gdb 7.6.2 on arch linux](http://forum.lazarus.freepascal.org/index.php/topic,23221.0.html)
1382786- [About the LLDB based debugger](https://forum.lazarus.freepascal.org/index.php/topic,42869.0.html)
1383787
1384788---
1385789*From the Free Pascal wiki, page "GDB Debugger Tips/ru", as it stood on 2020-02-16 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
1386790Category: Debugging

Back to history