Инструмент похож на `strace`, но для инструкций процессора

282
drjrm3

Я надеюсь найти что-то подобное, straceчто даст инструкции, используемые процессором. Например, у меня есть простой цикл, который вычисляет сумму и печатает каждую десятую итерацию

float fsum = 0.0; for(int i = 0; i < 1000; i++) { if(i%10==0) { fprintf(stderr, "%10.5f%%\n", 100.0*float(i)/float(1000)); } fsum += 1.0/float(i); } 

Теперь straceпредоставим информацию об fprintfоператоре, поскольку он является write(2оператором, но не дает информации о шагах суммирования. Если я хочу получить информацию о запущенной в данный момент программе, включая инструкции по использованию процессора, есть ли способ сделать это?

ПРИМЕЧАНИЕ: я знаю об инструментах, gprofкоторые требуют предварительной компиляции. Я ищу способ найти ту же информацию, которая gprofможет дать вам, но с ТОЛЬКО запущенной программой, которая может быть или не скомпилирована с учетом профилирования.

0
Как насчет `gdb`: https://www.gnu.org/software/gdb/ ..? txtechhelp 9 лет назад 0
Возможно, я ошибаюсь, но я не думал, что GDB может присоединиться к уже запущенной программе, не так ли? drjrm3 9 лет назад 0
yup: `gdb prorgram 1234`, где` 1234` - PID программы, к которой вы хотите присоединиться; если у вас нет файла в каталоге от вас, где вы запускаете GDB с именем `1234`, то он будет пытаться отладить файл, в противном случае PID. Вы не сможете увидеть полные стеки выполнения (т. Е. Полные имена функций вещей в самой программе), если у вас нет символов отладки для этой конкретной программы, но вы можете увидеть совсем немного того, что происходит (включая сборку, т.е. инструкции процессора) txtechhelp 9 лет назад 0

0 ответов на вопрос

Похожие вопросы