LINUX.ORG.RU

История изменений

Исправление Moisha_Liberman, (текущая версия) :

Это, на секундочку, всего лишь mmap/munmap/mremap/sbrk

Да, но вообще-то, strace позволяет совать нос в любые функции, важно только правильно указать ему куда смотреть надо. Например, вот тут мы с уважаемым @Toxo2 гонялись за execve()Есть ли настоящий C shell, а не csh? Укажите через -e какие функции именно Вас интересуют и вперёд. Если выхлоп не будет помещаться в одну строку, то можете через -s 10000 указать строку вывода в 10000 символов. Должно хватить, на мой взгляд. Писать здесь man strace я не стал ибо это несколько унизительно, как на мой взгляд. Очевидная вообщем-то вещь.

Принципиально не работает на статически слинкованных бинарниках.

Да, Вы правы. Но у меня почему-то сложилось впечатление что у Вас есть и статически и динамически слинкованный код. Возможно я и не прав, извините.

Если есть динамически слинкованный код, то можно было бы понаблюдать за ним. Поведение функций тут не должно различаться. Если сказано зарезервировать N байт в памяти, то не важно как там прилинкована библиотека. Я их этого исходил.

Я так же не стал Вам рекомендовать использовать gdb или ptrace для наблюдения за процессом извне, т.к. код может быть тщательно соптимизирован и картину работы с памятью возможно придётся долго восстанавливать. Хотя, в моём случае в gdb том же есть поддержка скриптования на python и скриптами проще искать проблему бывает.

всегда проще ручками для LD_PRELOAD-а написать костылик.

Не всегда возможно, по этой причине я лично на свой вкус и цвет это вариант как правило избегаю.

Исходная версия Moisha_Liberman, :

Уточню.

Это, на секундочку, всего лишь mmap/munmap/mremap/sbrk

Да, но вообще-то, strace позволяет совать нос в любые функции, важно только правильно указать ему куда смотреть надо. Например, вот тут мы с уважаемым @Toxo2 гонялись за execve()Есть ли настоящий C shell, а не csh? Укажите через -e какие функции именно Вас интересуют и вперёд. Если выхлоп не будет помещаться в одну строку, то можете через -s 10000 указать строку вывода в 10000 символов. Должно хватить, на мой взгляд.

Принципиально не работает на статически слинкованных бинарниках.

Да, Вы правы. Но у меня почему-то сложилось впечатление что у Вас есть и статически и динамически слинкованный код. Возможно я и не прав, извините.

Если есть динамически слинкованный код, то можно было бы понаблюдать за ним. Поведение функций тут не должно различаться. Если сказано зарезервировать N байт в памяти, то не важно как там прилинкована библиотека. Я их этого исходил.

Я так же не стал Вам рекомендовать использовать gdb или ptrace для наблюдения за процессом извне, т.к. код может быть тщательно соптимизирован и картину работы с памятью возможно придётся долго восстанавливать. Хотя, в моём случае в gdb том же есть поддержка скриптования на python и скриптами проще искать проблему бывает.

всегда проще ручками для LD_PRELOAD-а написать костылик.

Не всегда возможно, по этой причине я лично на свой вкус и цвет это вариант как правило избегаю.