To set the breakpoint you must kill the program and then rerun it so that the dynamic linker maps a copy of the shared library privately. There are two ways to run the program:

Rerun the program under GDB to have the debugger cause dld to map all shared libraries as private, enabling breakpoint debugging.

On PA-RISC systems, use the following command on an executable:

/opt/langtools/bin/pxdb -s on executable-name

The pxdb -son command marks the executable so that dld maps shared libraries as private when the program starts up.

You can verify the status of the shared library with this command:

/opt/langtools/bin/pxdb -s status executable-name

On both PA-RISC and IA64 systems, use the following command on an executable: chatr +dbg enable executable-name

This is similar to the pxdb command described above wherein it directs the dld to load the shared libraries as private when the program starts up.

On HP-UX 11i v3 Integrity systems, WDB enables automatic debugging of shared libraries without them being mapped private while attaching to a running program. For enabling automatic debugging of shared libraries, you must install the kernel patches PHKL_38651 and PHKL_38778.

14.22.5 Selectively Mapping Shared Libraries As Private

The -mapsharedoption suppresses mapping all shared libraries in a process private. This option enables new functions in the dynamic loader (patch PHSSS_33110 or later) to designate individual shared libraries for debugging. By default, HP WDB instructs the shared library dynamic loader, dld.sl(5), to map shared libraries in a process private, regardless of whether the chatr command is run for a particular shlib with +dbg or not.

The -mapsharedoption is used to save virtual memory for debugging applications with large amounts of code in shared libraries on machines with simultaneous debug sessions. The chatr +dbg option, and the _HP_DLDOPTS environment variable are used to identify shared libraries for debugging. The -mapsharedoption ensures that the text segments of all other shared libraries is shared across the system. The shared libraries are not mapped private and cannot have breakpoints set in them.

The set mapshared on command can be used to change modes from the (gdb) prompt.

(gdb) set mapshared on

The set mapshared off command can be used to load shared libraries after the current point is mapped private.

(gdb) set mapshared off

212 HP-UX Configuration-Specific Information

Page 212
Image 212
HP gnu source-level debugger 5992-4701 manual Selectively Mapping Shared Libraries As Private