Шаблон преобразуется в код только при создании экземпляра этого шаблона.Вы не получите asm для шаблона, если не создадите его экземпляр.
Однако вы можете попросить компилятор подробно объяснить экземпляры шаблона:
template class TemplatedClass<char>;
Если вы разместите такойВ строке c вашего файла вы получите asm, сгенерированный для char
варианта вашего шаблона.
Отладка обновления кода шаблона
Похоже, ваш реальныйВопрос в том, как узнать, в какой строке кода моего кода произошла ошибка моей программы?
Звучит так, как будто у вас есть файл ядра, вы точно указали адрес, посмотрели сборку по этому адресу и теперь хотите узнать, что означает эта сборка.
Ваш план состоит в том, чтобыПерекомпилируйте шаблон самостоятельно и найдите соответствующий участок ассемблера.
Ваше решение не будет работать
- необходимо создать экземпляры для определенного типа, иначе они не скомпилируют
- сгенерированный кодбудет часто отличаться для каждого типа, выбранного в (1)
- код шаблона обычно компилируется несколько раз в программе, каждый раз в модуле компиляции вызывающей функции шаблона.
- Из-за вышеизложенного вы не найдете точного соответствия для кода сбойной сборки.
Ваше решение не требуется
Я предполагаю, что вы можете повторитьсбой (т. е. это не файл ядра клиента, который вы просматриваете).
Добавляя символы -g
к аргументам gcc при каждой компиляции, вы сможете определить, на какой строке произошел сбой программы.
Сделайте это, затем снова приведите к сбою.
Я не скажу, что отладка шаблонов проста, но не легче, чем это.