dbx should work for you. You can even
execute the program via dbx and set break points
to allow you to step through the segment of code
and "watch" the variable in question. However,
multithreaded programs tend to be more difficult
to "step" through and in many cases that I have
observed personally, the code will not fail
when executed from the debugger
I would recommend a couple of things...
I would first add signal handling to catch
the signal (I assume you are getting a SEGV or
Segmentation fault type of error). This will
at least allow you to "control" the fault
detection to allow your program to "clean up"
then you can all "abort()" to dump a core image
if you like. Also, I would go to the
"old fashioned" way of what I like to call
"brute force" debugging. I would add logging
code around the sections of code that assign
values to this variable (be sure to "flush()" the
output to the log before moving on to the next
statement). Also, make sure that the Oracle
libraries and any shared libraries that you use
on the production machine are the same version
as your development environment.
Another thing to try, is if you can build the
code completely with "static" libraries, do that.
It may also help to post the "exact" system
error message. I assuming it's a SEGV error
which typically indicates stack corruption which
can easily happen if the bounds of an array are
exceeded but seeing the error would verify this
assumption.