2013-12-13 1 views
0

Я использую TCL как встроенный элемент управления в моей системе, и мне нужно немного изменить его источник ядра, я имею в виду код под общим /, например tclInterp.c. Я добавляю printf в исходный код для отслеживания моей модификации, но по какой-то причине я не вижу выход. Я вижу, что код использует fprintf, я использовал это и пробовал как stdout, так и stderr, все еще не работая.Как использовать printf для отладки источника TCL v8.4

Я уже добавил «--enable-symbols=all» для запуска конфигурации и повторной сборки пакетов. Есть что-то еще, что мне нужно сделать?

+0

Какова функциональность, которую вы пытаетесь добавить, и которая вам нужна для отладки самого Tcl, чтобы понять? (Я надеюсь, что у него нет интерпретатора в нескольких потоках, что _really_ не будет работать ...) –

ответ

3

Вместо этого вы должны использовать отладчик. Добавление выражений printf к основному коду приведет к тому, что ваш вывод появится на stdout, который ваши сценарии Tcl могут перенаправлять. использование fprintf(stderr, ...) может с меньшей вероятностью столкнуться со сценариями, которые вы запускаете. --enable-symbols просто приводит к отлаживаемой сборке - это не повлияет на способность писать на stdout, но приведет к тому, что отладчик сможет создавать значимый результат.

Вы не говорите - но если вы находитесь в Windows и встроены в графическую программу, вы, вероятно, вообще не имеете stdout. В Windows лучше всего использовать OutputDebugString и просматривать сообщения в окне вывода Visual Studio или sysinternals DbgView. В unix консоль, на которой вы запускаете приложение, должна показывать вывод. Однако на самом деле отслеживание ваших модов с помощью отладчика будет лучшим маршрутом.

Вы действительно хотите изменить ядро? Кажется маловероятным для меня. Обычно вы просто добавляете дополнительные интерпретаторы для предоставления интерфейса вашему хостинговому приложению. API Tcl предлагает доступ практически ко всему, с чем вы, возможно, захотите поиграть.

+0

Кроме того, вы можете попробовать сбросить сообщения журнала в файл (с меткой времени, конечно). Вот как я отлаживаю серверы (особенно там, где сервер работает как несколько процессов). –

Смежные вопросы