Разница между Debugger.Launch и Debugger.Break - PullRequest
28 голосов
/ 21 сентября 2010

В чем разница между

Debugger.Launch();
Debugger.Break();

?

Ответы [ 3 ]

19 голосов
/ 21 сентября 2010

Читая документацию, кажется, что Launch ничего не делает, если отладчик подключен - на самом деле он не прерывается (хотя я не проверял это).1006 * просит запустить отладчик (если он не подключен), а делает перерыв.

В действительности, вряд ли у вас будет больше одногоLaunch точка ... если что.

15 голосов
/ 21 сентября 2010

Запуск запускает отладчик, когда он доступен.Но просто игнорируется, если нет ни одного доступного.Break прервет работу программы, если отладчик недоступен.

8 голосов
/ 12 декабря 2010

Более тонкие различия:

  1. Если отладчик уже подключен, Debugger.Launch имеет вид nop ; в то время как Debugger.Break всегда сломается в отладчик.

  2. Запуск отладчик на самом деле не ломается в отладчик. Например, в Visual Studio, Debugger.Launch прикрепит отладчик к запущенному процессу, но тогда вам еще нужно сделать отладку | Перерыв в Visual Studio, чтобы фактически сломаться под отладчик.

...