Это не место для обучения, но я действительно рекомендую вам ознакомиться с инструментами самоанализа и экспертизы, которые предлагает tkcon
. Простой и очень короткий пример: вы запустили некоторый код из tkcon
, код, который включает в себя неясную и сложную команду foo
. Вы подозреваете, что-то с ним, так что вы вводите команду edit -type proc foo
и получить окно с текстом
proc foo {} {
for {set i 0} {$i < 10} {incr i} {
set a [expr {2*$i}]
}
}
Вы решили отслеживать изменения в a
и введите observe variable a write
в качестве новой первой команды в теле. Затем вы выбираете Send to slave
в меню Send to...
, а это значит, что foo
теперь переопределено в главном окне tkcon
. Когда вы снова запустите свой код, изменения в a
будут занесены в окно консоли tkcon
(в виде командных строк set a ...
).
Возвращаясь к окну редактирования, вы можете добавить точку останова, вставив команду idebug break
. Если вы введете команду idebug on
в окно консоли и снова запустите свой код, выполнение остановится в этот момент, и вы получите интерактивное приглашение, в котором вы можете, например. подняться/спуститься из стека вызовов, перечислить переменные и получить трассировку стека, а также выполнить произвольные команды для изменения значений переменных и т. д.
Если вы внесли значительные изменения в команду в окне редактирования, вы можете сохранить ее к новому файлу или добавьте его в старый (исходный файл Tcl может иметь несколько определений одной и той же команды: используется только последний). Если вы его не сохраните, исходный источник не изменится. Вы можете даже открыть несколько окон редактирования с помощью одной и той же команды и отредактировать их отдельно, используя разные варианты.
Вы также можете указать источник tkcon
в свой собственный код и использовать tkcon show
, чтобы получить окно консоли, которое знает состояние вашей программы.
Ввод команды edit -type file $argv0
в консоли должен позволить вам взглянуть на источник для tkcon
, окончательной документации.
Лучшее, что я нашел до сих пор, это ramdebugger, но я думаю, что вы, возможно, попробовали это. Один трюк, который я иногда делаю, это присоединить tkcon к запущенной программе (если это программа Tk, это легко). Затем в tkcon я могу редактировать функции, вызывать функции редактировать глобальные переменные и т. Д. – slebetman
Это просто консольное окно? – Sawyer
Да. Но он реализует действительно полезную команду редактирования. Например, вы можете ввести 'edit variablename' и открыть значение этой переменной в окне редактора. Или «edit procname», и он откроет определение proc в окне редактора. В принципе, вы можете вставлять элементы внутри функций в запущенные программы. – slebetman