This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [Bug runtime/2497] STP_STRING_SIZE set by stap is too small
- From: Martin Hunt <hunt at redhat dot com>
- To: sourceware-bugzilla at sourceware dot org
- Cc: systemtap at sources dot redhat dot com
- Date: Mon, 03 Apr 2006 17:38:07 -0700
- Subject: Re: [Bug runtime/2497] STP_STRING_SIZE set by stap is too small
- Organization: Red Hat Inc.
- References: <20060330093952.2497.guanglei@cn.ibm.com> <20060403034347.11857.qmail@sourceware.org>
On Mon, 2006-04-03 at 03:43 +0000, guanglei at cn dot ibm dot com wrote:
> I can call print_backtrace() to print the backtrace, but in fact I
> want to
> combine the string of backtrace with other information to generate the
> output of
> a specific event, like the following:
>
> String str = _stp_string_init (0);
> _stp_stack_sprint (str, CONTEXT->regs, 0);
> _lket_trace(THIS->var_id, "%1b%4b%1b%ld%4b%4b%s",
> cmd->device->sdev_state,
> scsi_info,
> cmd->sc_data_direction, cmd->request_buffer,
> cmd->request_bufflen,
> cmd->device->host->cmd_pid, _stp_string_ptr(str));
>
> So what I want is a larger String obtained by _stp_string_init, while
> keep all other strings used by stap the same as before.
But aren't there just two possibilities?
1. You print the backtrace.
2. You get the backtrace in a string and save it in an array.
For #1, you use print_backtrace. For #2, you need to have all strings be
larger, as it is done now.
In your example above, you would just write something like this in
script:
bin_write("%1b%4b%1b%ld%4b%4b", cmd->device->sdev_state, [...])
print_backtrace()
Martin