From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60527) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dakbm-00017S-3a for qemu-devel@nongnu.org; Thu, 27 Jul 2017 11:21:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dakbi-0001ce-36 for qemu-devel@nongnu.org; Thu, 27 Jul 2017 11:21:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39634) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dakbh-0001cN-PO for qemu-devel@nongnu.org; Thu, 27 Jul 2017 11:21:45 -0400 Date: Thu, 27 Jul 2017 16:21:37 +0100 From: "Daniel P. Berrange" Message-ID: <20170727152137.GW2555@redhat.com> Reply-To: "Daniel P. Berrange" References: <150091574424.30739.4131793221953168474.stgit@frigg.lan> <20170725131931.GC23343@stefanha-x1.localdomain> <20170726112633.GE18489@stefanha-x1.localdomain> <20170727104302.GI2555@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH 00/13] instrument: Add basic event instrumentation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Stefan Hajnoczi , Stefan Hajnoczi , "Emilio G. Cota" , =?utf-8?B?TGx1w61z?= Vilanova , QEMU Developers On Thu, Jul 27, 2017 at 11:54:29AM +0100, Peter Maydell wrote: > On 27 July 2017 at 11:43, Daniel P. Berrange wrote: > > Maybe I'm missing something, but aren't all these things > > already possible via either the statically defined tracepoints > > QEMU exposes, or by placing dynamic tracepoints on arbitrary > > code locations using dtrace/systemtap/lttng-ust. > > Last time I looked we didn't have tracepoints on most of > the events you'd be interested in. > > That said, yes, I was going to ask if we could do this via > leveraging the tracepoint infrastructure and whatever scripting > facilities it provides. Are there any good worked examples of > this sort of thing? Can you do it as an ordinary non-root user? Do you have a particular thing you'd like to see an example of ? To dynamically probe a function which doesn't have a tracepoint defined you can do: probe process("/usr/bin/qemu-x86_64").function("helper_syscall") { printf("syscall stasrt\n") } but getting access to the function args is not as easy as with pre-defined tracepoints. You can't typically run this as root, however, I don't think that's a huge issue, because most QEMU deployments are not running as your own user account anyway, so you can't directly interact with them no matter what. If the goal is to be easy to instrument without havig to rebuild QEMU, then I think using one of the existing trace backends is the best viable option, as those are already enabled by distros. I find it very unlikely that Fedora/RHEL would ever enable a trace backend that lets you load arbitrary code into the QEMU process, so you'd be back to having to rebuild QEMU again even with that approach. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|