Как отладчик работает?

160
задан ya23 30 April 2012 в 08:57
поделиться

4 ответа

Детали того, как отладчик работы будет зависеть от того, что Вы отлаживаете, и какова ОС. Для собственного компонента, отлаживающего в Windows, можно найти некоторые детали о MSDN: API Отладки Win32.

пользователь говорит отладчик, которые обрабатывают для присоединения к, или по имени или идентификатором процесса. Если это будет имя тогда, то отладчик будет искать идентификатор процесса и инициировать сеанс отладки через системный вызов; в соответствии с Windows это было бы DebugActiveProcess.

Когда-то присоединенный, отладчик введет цикл событий во многом как для любого UI, но вместо событий, прибывающих из системы управления окнами, ОС генерирует события на основе того, что происходит в процессе, отлаживаемом †“, например, появление исключения. См. WaitForDebugEvent.

отладчик в состоянии считать и записать виртуальную память целевого процесса, и даже скорректировать ее значения регистра через API, обеспеченные ОС. См. список функции отладки для Windows.

отладчик в состоянии использовать информацию от файлов символов для перевода от адресов до имен переменной и местоположений в исходном коде. Информация о файле символов является отдельным набором API и не является базовой частью ОС как таковой. В Windows это через доступ SDK Интерфейса Отладки.

при отладке управляемой среды (.NET, Java, и т.д.) процесс будет обычно выглядеть подобным, но детали отличаются, поскольку среда виртуальной машины обеспечивает API отладки, а не базовую ОС.

92
ответ дан Peter Mortensen 23 November 2019 в 21:33
поделиться

В Linux, отлаживая процесс начинается ptrace (2) системный вызов. Эта статья имеет большое учебное руководство о том, как использовать ptrace для реализации некоторых простых конструкций отладки.

24
ответ дан Adam Rosenfield 23 November 2019 в 21:33
поделиться

Если бы Вы находитесь в Windows OS, большой ресурс для этого "Отладил бы Приложения для Microsoft.NET и Microsoft Windows" John Robbins:

(или даже более старый выпуск: "Приложения Отладки" )

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

, Так как я не знаком с деталями отладки Unix/Linux, этот материал не может применяться вообще к другой ОС. Но я предположил бы, что как введение в очень сложный предмет понятия - если не детали и API - должны 'портировать' на большую часть любой ОС.

9
ответ дан Michael Burr 23 November 2019 в 21:33
поделиться

Мое понимание - то, что то, когда Вы компилируете приложение или файл DLL, независимо от того, что он компилирует в, содержит символы, представляющие функции и переменные.

, Когда у Вас есть отладочная сборка, эти символы намного более подробны чем тогда, когда это - сборка конечных версий, таким образом позволяя отладчику дать Вам больше информации. При присоединении отладчика к процессу он смотрит, к каким функциям в настоящее время получают доступ, и разрешает всю доступную отладочную информацию отсюда (так как он знает то, на что внутренности скомпилированного файла похож, он может acertain, что могло бы быть в памяти, с содержанием ints, плаваний, строк, и т.д.). Как первый сказанный плакат, эта информация и как эти символы работа значительно зависят от среды и языка.

1
ответ дан Peter Mortensen 23 November 2019 в 21:33
поделиться
Другие вопросы по тегам:

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