У меня есть небольшой проект, в который я добавил свои собственные пользовательские функции отладки, чтобы иметь дополнительную функциональность. Они отлично работают и используют следующий метод для отправки данных:
while(*bp)
ITM_SendChar(*bp++);
Наконец-то я переключил все операторы printf на использование моей собственной функции, и весь вывод просто прекратился. Немного поигравшись, я понял, что пока у меня скомпилирована одна единственная функция printf, независимо от того, где, ITM_SendChar работает сразу же.
Казалось бы, есть некоторая скомпилированная функциональность, когда в проекте используется printf, что позволяет работать ITM_SendChar.
Это не имеет большого значения, но мне довольно любопытно, почему это так. Возможно, есть другой способ инициализировать систему ITM (Instrumentation Trace Macrocell) без необходимости вставлять фиктивный printf?
printf
, переименовать файл карты, перестроить его снова с фиктивнымprintf
где-нибудь и сравнить текущий файл карты с предыдущим файлом карты. В частности, найдите символыITM_SendChar
иprintf
и посмотрите, есть ли различия в этих областях. Ваша теория некоторых функций, скомпилированных при использованииprintf
, звучит странно, но если есть дополнительная функциональность, вы должны увидеть ее как часть различий между двумя файлами. - person barak manos   schedule 04.11.2014