mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 17:16:25 +00:00
45 lines
1 KiB
Text
Executable file
45 lines
1 KiB
Text
Executable file
#!/usr/bin/stap
|
|
/*
|
|
* Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
|
|
*
|
|
* apitrace - Display DB API calls and return values
|
|
*
|
|
* The path to the DB library is required to be the first argument.
|
|
*
|
|
* To limit tracing to a particular process use one of the stap options:
|
|
* -x <pid> or
|
|
* -c "<program> [<program arguments>..]"
|
|
*
|
|
*/
|
|
|
|
global tracecount, maxlimit;
|
|
|
|
probe begin
|
|
{
|
|
printf("DB API call trace of ");
|
|
if (target() == 0)
|
|
printf("processes using \"%s\"\n", @1);
|
|
else
|
|
printf("process %d\n", target());
|
|
printf("Interrupt to display summary\n");
|
|
maxlimit = -1;
|
|
%( $# >= 2 %? maxlimit = $2 %)
|
|
tracecount = 0;
|
|
}
|
|
|
|
probe process(@1).function("db_*create").call,
|
|
process(@1).function("__*_*pp").call
|
|
{
|
|
printf("%s -> %s called with (%s)\n",
|
|
thread_indent(1), probefunc(), $$parms);
|
|
|
|
}
|
|
|
|
probe process(@1).function("db*_create").return,
|
|
process(@1).function("__*_*pp").return
|
|
{
|
|
printf("%s <- %s returns %d\n", thread_indent(-1),
|
|
probefunc(), $return)
|
|
if (++tracecount == maxlimit)
|
|
exit();
|
|
}
|