Как заставить strace печатать адреса строковых аргументов, а не только их значения?
Я пытаюсь использовать strace
чтобы понять, как бинарная программа использует память.
Тем не менее, по умолчанию вывод strace
, в попытке быть более удобным для пользователя, печатает любой char *
буферы как соответствующие строки.
read(3, "Tell me, Muse, of that man of ma"..., 4096) = 270
Есть ли способ сказать strace
распечатать фактический адрес строки рядом с ее содержимым?
Если невозможно получить и то и другое, то будет также хорошо печатать только адрес строки вместо ее усеченного содержимого.
2 ответа
Вы можете скачать источникstrace
и изменить все это tprintf("%s", ...)
в tprintf("%p", ...)
и создать локальную копию strace
,
-e raw=read должен делать то, что вы уже хотите. Там не должно быть необходимости в модификации источника.
broadway @ creepspread: ~% strace -e raw = читать ls 2>&1|grep ^read
читать (0x3, 0x7fff5ea52e78, 0x340) = 0x340
читать (0x3, 0x7fff5ea52e48, 0x340) = 0x340
читать (0x3, 0x7fff5ea52e18, 0x340) = 0x340
читать (0x3, 0x7fff5ea52de8, 0x340) = 0x340
читать (0x3, 0x7fff5ea52ca8, 0x340) = 0x340
читать (0x3, 0x7fff5ea52c48, 0x340) = 0x340
читать (0x3, 0x7fff5ea52c18, 0x340) = 0x340
читать (0x3, 0x7fef1433f000, 0x400) = 0x136
читать (0x3, 0x7fef1433f000, 0x400) = 0