Я пытаюсь проверить работу сети qemu. Итак, я создаю одну новую точку трассировки внутри net/net.c: qemu_deliver_packet(). TP успешно установлен (# lttng list -u). Однако TP не появился, когда я запускаю сеанс lttng. Дело в том, что та же самая точка отслеживания появилась, когда я использую printf(). Почему? это потому, что мне нужно настроить что-то для libvirt (я использую libvirt)?Может ли lttng захватывать любые пользовательские точки трассировки?
0
A
ответ
0
Включили ли вы контрольную точку, с lttng enable-event -u [event name]
(или -a
)?
Наличие точки следа в lttng list -u
означает, что оно зарегистрировано и доступно, но вам нужно включить его в сеансе трассировки, чтобы он генерировал события трассировки.
1
у вас должен быть пользователь "libvirt-qemu" в группу "tracing". Когда пользователь не входит в группу отслеживания, он может читать/записывать трассировку для Lttng. См. http://linuxmogeb.blogspot.ca/2016/02/trace-qemu-with-lttng-ust-under-libvirt.html
Да, я это сделал. Я думаю, что это до libvirt, потому что, когда я запускал Qemu вручную (без virsh), тогда я могу захватить эту TP. Теперь я хочу знать, как включить его при использовании libvirt. Должен ли я что-то изменить в libvirtd.cfg? – adywp
Хм, возможно ли, что libvirt запускает qemu через fork()? В этом случае вам, возможно, придется использовать библиотеку liblttng-ust-fork. В основном 'LD_PRELOAD = liblttng-ust-fork.so [appname]'. См. [Этот раздел] (http://lttng.org/docs/#doc-using-lttng-ust-with-daemons) документации. – alexmonthy