Отладка приложения Tcl/tk для Windows
Возможна ли отладка приложения Tcl/tk для Windows без исходного кода? Приложение не имеет поддержки, и нет доступного исходного кода. Ошибка во время одной из операций. Можно ли найти причину ошибки и можно ли исправить ее путем исправления кода?
1 ответ
Это очень сложно без исходного кода, так как он находится на уровне исходного кода, на котором вам нужно будет сделать патч. Если код подвергает себя через send
командный механизм (или comm
пакет), вероятно, вы можете немного продвинуться (по умолчанию в Tcl есть довольно хорошие возможности для самоанализа, поэтому info commands
, info vars
а также info body
может помочь, наряду со многими другими info
команды и некоторые интроспекторы, которые тоже есть где-то еще), но это все еще действительно сложно, особенно если вы не понимаете внутреннюю структуру кода. OTOH, я не ожидал бы, что производственное приложение выставит себя таким образом; обычно вы отключаете подобные вещи, когда находитесь вне разработки.
Стандартный отладчик, такой как gdb, не поможет, особенно в нерекурсивной среде выполнения Tcl 8.6. (Приложения Tcl в этой среде, как правило, проявляют себя как "работающие вещи"; нет ничего, что действительно указывало бы на то, как они взаимодействуют)
Но первое, что нужно проверить, есть ли у вас исходный код. Вполне возможно, что код был только что упакован вместе как Starpack, и вы можете использовать такой инструмент, как sdx, для извлечения того, что вам нужно для внесения изменений. Но вы не гарантируете успеха в этом; если код был скомпилирован / скрыт с помощью коммерческого инструмента, такого как TDK, у вас действительно нет исходного кода, и вы не можете ничего с этим поделать. (По тем же общим принципам, которые означают, что DRM не работает хорошо, можно декомпилировать .tbc
файлы, которые создает TDK, но это действительно последний шаг, поскольку это технически незаконно в некоторых юрисдикциях, морально довольно хитроумно и склонно производить действительно ужасный вывод.) Можете ли вы связаться с первоначальным автором (ами) кода вместо? Если это сработает, это будет дешевле и проще...
Если у вас есть действительно читаемый код, даже если он упакован с помощью sdx, вы можете сделать гораздо больше.