GDB

You can debug using the test harness as follows:

nzudxrunharness --name "apply" --file input.txt --print \
--varargs "varchar(10):int4:int4" --print --dbg
(clientmgr) Info: admin: login successful
which: no gdb-6.8 in (/nz/kit/bin:/nz/kit/bin/adm:/nz/kit/sbin:\
 /usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:\
 /usr/bin:/nz/kit/bin:/nz/kit/bin/adm:/nz/kit/sbin:/sbin:\
 /opt/net/tools/bin:/opt/accurev/bin:/home/nz/bin)
Selected only choice
1 - APPLY() RETURNS FLOAT8
Executing /nz/kit/sbin/gcc/bin/gdb /nz/kit/bin/adm/udxharness
--command=APPLY_func.gdb

GNU gdb Fedora (6.8-27.el5)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu"...
Breakpoint 1 at 0x809e84a: file /nz/src/tools/udxharness/udxharnessimpl.cpp, line
49.
[Thread debugging using libthread_db enabled]
[New Thread 0xf7f13ac0 (LWP 29101)]

Breakpoint 1, startingFunction () at
/nz/src/tools/udxharness/udxharnessimpl.cpp:49
49 printf("starting execution\n");
(gdb) set follow-fork-mode child
(gdb) b main
Breakpoint 2 at 0x809e873: file /nz/src/tools/udxharness/udxharnessimpl.cpp, line
647.
(gdb) c
Continuing.
starting execution
[Thread debugging using libthread_db enabled]
[New Thread 0xf7f13ac0 (LWP 29107)]
[New process 29107]
Executing new program: /nz/export/ae/applications/dev/admin/host/testapply
Error in re-setting breakpoint 1: Function "startingFunction" not defined.
warning: Cannot initialize thread debugging library: generic error
[Thread debugging using libthread_db enabled]
[Switching to Thread 0xf7f13ac0 (LWP 29107)]

Breakpoint 2, main () at applyopcpp.cpp:19
19 NzaeApiGenerator helper;
(gdb) c
Continuing.
[New Thread 0xf7e95b90 (LWP 29108)]
in evaluate
DOUBLE: 3.000000
Elapsed time: 0m1.874s
External references
vtable for __cxxabiv1::__class_type_info
vtable for __cxxabiv1::__si_class_type_info
operator delete[](void*)
operator delete(void*)
operator new(unsigned int)
__cxa_begin_catch
__cxa_end_catch
__cxa_pure_virtual
__gxx_personality_v0
free
nzaeisoAdapUdfClose
nzaeisoAdapUdfCreate
nzaeisoAdapUdfGetReturn
nzaeisoAdapUdfGetSizerResult
nzaeisoAdapUdfSetController
nzaeisoAdapUdfSwitchToSizerMode
nzaeisoCtrlUdfClose
nzaeisoCtrlUdfCreate
nzaeisoCtrlUdfGetResult
nzaeisoCtrlUdfNewInput
nzaeisoCtrlUdfNoMoreInput
nzaeisoCtrlUdfSetAdapter
sprintf
strcmp
strdup
throwError

Our UDX object used 0 bytes (may be rounded up to nearest page 4096)
Our UDX return value takes up 8 bytes, with 669 bytes for miscellaneous
Our UDX arguments take up 30 bytes, with 34 bytes for miscellaneous
Our UDX state values take up 0 bytes, with 8 bytes for miscellaneous
State information may be doubled, since we need two states for merge
[Thread 0xf7e95b90 (LWP 29108) exited]

Program exited normally.
(gdb) q