2014-02-20 2 views
1

Почему отладчик должен остановить выполнение кода для отображения значений переменных?VS Отладка во время выполнения программы

Очевидно, это можно сделать явным образом, например. label.text = var.tostring().

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

Как кажется VS отладчик как прочный, так как он не предоставляет мне эту опцию, поскольку окна памяти блокируются во время выполнения.

Возможно, я просто не понимаю парадигмы отладки.

+0

В каких случаях вам нужны такие функциональные возможности? – Matt

+0

Какую версию вы используете? Это экспресс-издание? – elyashiv

+0

VS 2013 Express для рабочего стола – user2395585

ответ

1

Отладчик VS - это действительно тонкий слой в отладчике CLR (ICorDebug), и для этого требуется остановить выполнение заданного потока, чтобы проверять значения, такие как локальные, стоковые кадры, делать вызовы методов и т. Д.

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

+0

Я вижу, как это может привести к хаосу при неправильном использовании, особенно в большой среде, где часто используется GC для надлежащего использования памяти. В самом деле, GC - это метод обречения на память. Вот почему я подумал об отладчике в первую очередь, чтобы он мог отслеживать события GC, смены памяти и т. Д. Спасибо за ответ. – user2395585

Смежные вопросы