Member 14563206 Ответов: 2

Программа Vb умирает. Не могу сказать, где именно.


У меня проблемы с последовательной связью.

Соответственно, я скачал SC-код
--который, как я предположил, работает идеально, как и в его видео--

по ссылке, приведенной здесь:

Учебник по последовательному COM - порту Visual Basic (Visual Studio 2010) - Часть 3-YouTube[^]

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

Есть ли способ использовать отладчик для пошагового просмотра следующего шага (Next Sub), на котором код умирает?

Что я уже пробовал:

Я проверил, что подводные лодки, которые я знаю, чтобы привести к катастрофе, чисты,
но не могу сказать, куда он идет оттуда.

Member 14563206

Я рад, что сформулировал свой вопрос именно так, поскольку он вызвал такой информативный ответ.

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

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

Richard MacCutchan

Вы можете попробовать "run to click", см. Учебник: отладка кода Visual Basic - Visual Studio | Microsoft Docs[^].

Member 14563206

Спасибо! Я бы никогда не заметил эту Зеленую стрелу, если бы ты не обратил на нее моего внимания.

2 Ответов

Рейтинг:
15

Myers97470

Шаг через VB-код можно выполнить с помощью точек останова, и F11 выполняет один шаг. Вы можете пройти как через свой основной поток, так и через рабочие потоки, даже те, которые вы не создали неявно, используя выпадающее окно "поток" прямо под кнопкой "Пуск/Стоп/продолжить".


Рейтинг:
1

OriginalGriff

Цитата:
Соответственно, я скачал SC-код
--который, как я предположил, работает идеально, как и в его видео--

Так вот, это ваша первая ошибка.
Цитата:
Программа работает плавно, оставляя четко отлаженную субмарину,

А вот и ваш второй.
Цитата:
Есть ли способ использовать отладчик для пошагового просмотра следующего шага (Next Sub), на котором код умирает?

И третий тоже.

Просто потому, что метод не падает сразу, просто потому, что он, кажется, работает в видео (особенно видео на YouTube), не означает, что он делает то, что вы хотите, или то, что вам нужно, чтобы работать с вашим кодом. Отладка-это гораздо более сложный процесс, чем "он не разбился при запуске".

И одна из проблем с последовательной связью заключается в том, что полученные данные не "поступают" в основной поток - он использует совершенно другой поток для передачи вам каждого символа по мере его поступления. Таким образом, "предсказание следующего суб", который будет выполняться кодом, бессмысленно, потому что, как только вы вводите последовательные данные, ваш поток становится многопоточным, а понятие "следующий" очень расплывчато: следующий выполняемый код может произойти до, во время или после текущей строки кода, и вы не можете это контролировать.

А отладка многопоточных приложений намного сложнее! Начать здесь: Научитесь отлаживать многопоточные приложения - Visual Studio | Microsoft Docs[^] и здесь: Отладка многопоточных приложений - Visual Studio | Microsoft Docs[^] и начинайте читать!