Что нового

Отладка кода

Prog

Осваивающий
Сообщения
364
Репутация
34
Народ, кто и как отлаживает программы? Нужна возможность в любой момент остановки скрипта, пошаговое выполнение кода, стек вывозов, просмотр всех глобальных переменных/массивов и локальных (в пределах стека вызовов). В случае ошибки скрипта, необходимо получить стек вызовов и данные из интересующих переменных (какие заранее неизвестно и выяснится походу изучения причины ошибки).
Пробовал этот отладчик. Он виснет при запуске скрипта. В чем причина неизвестно.
Этот работает но функционал очень скромный. Стека вызовов нет. Нет возможности изучать переменные/массивы которые могут хранить вложенные массивы. При ошибке скприта, отладчик завершаетсмя вместе с ним. То есть отладчик не отладчик вовсе и для меня бесполезен...

Странно что автоит не поддерживает отладку, ведь интерпретатору известно все об исполняемом скрипте. В этом плане у него преимущество перед компилируемыми ЯП, в которых к основному коду добавляется отладочный.
Почему разработчики до сих пор не добавили отладку?
 

joiner

Модератор
Локальный модератор
Сообщения
3,430
Репутация
599
На форуме есть темы по отладчикам. Например
Но так или иначе придется доделывать или переделывать
 
  • Like
Реакции: Oki

Oki

Знающий
Сообщения
103
Репутация
5
Нужна возможность в любой момент остановки скрипта

просмотр всех глобальных переменных
Эти два вопроса иногда решаю вот таким сочинённым на коленке топорным методом, который пусть и не очень удобен в сравнении с нормальными трассировщиками, но всё-таки бывает весьма полезен.
Код:
HotKeySet("{F11}", "DebugWatch")
Func DebugWatch()
   $sExpression = ""
   $sExpressionResult = ""
   Do
      $sExpression = InputBox("Debug Watch", $sExpression & " = " & $sExpressionResult & ". Input the next expression to watch or press <Enter> to exit Debug Watch.")
      $sExpressionResult = Execute($sExpression)
   Until $sExpression = ""
EndFunc
Можно кинуть этот код в отдельный au3-файл и подключать include'ом в одну строку. При желании можно доработать для выдачи по команде массивов полностью (а не по одному элементу вручную) и даже выводить номер исполняемой строки скрипта, но последнее, как мне видится, потребует написания специального скрипта для трансляции задаваемого скрипта в производный от него расширенный скрипт (подобным образом даже можно пошаговое выполнение обеспечить), собирающий информацию о выполнении в выделенные для этого переменные. Голь на выдумки хитра, а разработчики языка и языковых сред имеют собственные приоритеты.
 
Последнее редактирование:
Автор
P

Prog

Осваивающий
Сообщения
364
Репутация
34
Это не самый удобный и продуктивный вид отладки...
 

Oki

Знающий
Сообщения
103
Репутация
5
Это не самый удобный и продуктивный вид отладки...
Самый удобный и продуктивный, к сожалению, стандартными средствами не предоставляется. Остаётся лишь искать ходы наподобие предложенных (не только в этом топике, но и в других по этому вопросу).
 
Верх