Я могу отладить скомпилированный блок?

Я ищу способ отладить скомпилированные блоки из Visual Studio.

Действительно ли это возможно? Возможно, с помощью некоторого дополнения отражателя?

Я не ищу способ декомпилировать/перекомпилировать и затем отладить.

6
задан tom greene 17 February 2010 в 22:05
поделиться

4 ответа

Если у вас нет файлов PDB для сборки, попробуйте использовать .Net Reflector Pro , который был выпущен через несколько дней тому назад. Он может декомпилировать код на лету в Visual Studio, а затем выполнять его пошагово, как если бы вы отлаживали свой собственный исходный код ( он не требует от вас декомпиляции и повторной компиляции ). Это платная надстройка Visual Studio, но она поставляется с 14-дневной пробной версией, после чего возвращается к бесплатной версии Reflector.

2
ответ дан 17 December 2019 в 07:03
поделиться
  • Как обработать очередь?
  • Запустить отдельный поток в Application_Start global.asax прослушивает очередь? Если есть сообщения, они выдаются один на время.
  • Нужно ли это делать отдельной нитью? Что если в global.asax вы просто вызываете singleton, например, который начинает слушать очередь? В каком потоке пробежит этот одиночный? (что это за нить, которая вызывает global.asax)

[skip]

  • Мне не нравится идея, но не могли бы вы поместить exe в корень вашего веб-сайта, exe, который > запускает процесс прослушивания очереди...

Обычно очередь обрабатывается другой программой - не ASP.NET. Служба Windows или исполняемый файл, запущенный под планировщиком (и нет причин помещать его в корень вашего веб-сайта).

  • Если вы получаете сообщение из очереди, удалите его при извлечении он вышел или вы удалили его, если денормализация для этого сеанса была успешно? Если вы удалите его, когда вы вытащите его и что-то пойдет неправильно...

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

  • Какие наилучшие методы для реализации этого? Ссылки? Ресурсы? Учебные пособия? Примеры?

Это учебное пособие является хорошим введением и Блог Джона Брейквелла превосходен и предлагает много хороших ссылок (в том числе на его простой в поиске боковой панели «Документация MSMQ»).

-121--4378632-

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

Вот ключевой фрагмент кода, который открывает имя файла с помощью соответствующего приложения:

(shell-command (concat "rundll32 shell32,ShellExec_RunDLL " (shell-quote-argument filename)))

И вот мое полное решение. (Обратите внимание, что dired-find-file - это всего лишь обертка с раундом find-file , которая не знает имя файла, поэтому вам необходимо сообщить find-file , а не dired-find-file , как в вопросе. Если вы не хотите использовать find-file , вам, вероятно, потребуется переписать dired-find-file или написать более сложный совет.)

(defun open-externally (filename)
  (shell-command (concat "rundll32 shell32,ShellExec_RunDLL " (shell-quote-argument filename))))

(defun is-file-type? (filename type)
  (string= type (substring filename (- (length filename) (length type)))))

(defun should-open-externally? (filename)
  (let ((file-types '(".pdf" ".doc" ".xls")))
    (member t (mapcar #'(lambda (type) (is-file-type? filename type)) file-types))))

(defadvice find-file (around find-file-external-file-advice (filename &optional wildcards))
  "Open non-emacs files with an appropriate external program"
  (if (should-open-externally? filename)
      (open-externally filename)
    ad-do-it))

(ad-activate 'find-file)
-121--3503286-

Конечно, нет проблем. Пока у вас есть файл .pdb. Отладка не так насыщенна, вы часто не сможете проверить локальные переменные, и одностадийное поведение иногда бывает странным.

1
ответ дан 17 December 2019 в 07:03
поделиться

Да. Для этого нужно отключить функцию «Только мой код» (Инструменты -> Параметры -> Отладка), а затем загрузить PDB для библиотеки DLL. После этого вы сможете без проблем войти в DLL.

1
ответ дан 17 December 2019 в 07:03
поделиться

Вы можете присоединиться к запущенному процессу, используя Отладка -> Присоединиться к процессу. Если у вас есть копия работающего исходного кода с .pdb в Visual Studio, вы можете выполнять отладку в обычном режиме.

0
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

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