1. Introducing The Oracle Solaris Studio 12.2 Release
8. Known Problems, Limitations, and Workarounds in This Release
The following features were added or changed in Oracle Solaris Studio 12.2 dbx.
Improved support for optimized code debugging:
Information for locating parameters and local variables is available on x86 platforms.
Information on inline functions is available for SPARC platforms.
New commands for displaying information on OpenMP regions, tasks, and thread sets:
omp_pr [parallel_region_id] [-ancestors|-tree] [-v]
Print a description of the current parallel region or the region specified by the parallel_region_id, including the parallel region id, type (implicit or explicit), state (active or inactive), team size (number of threads), and program location (program counter address).
omp_tr [task_region_id] [-ancestors|-tree]
Print a description of the current task region or the region specified by the task_region_id, including the task region id, type (implicit or explicit, tied or untied), state (spawned, executing, or waiting), encountering thread, executing thread, program location, unfinished children, and parent.
omp_team [parallel_region_id]
Print all the threads in the current team. If parallel_region_id is specified, print the threads in the team for that region.
omp_loop
Print a description of the current loop, including scheduling type (static or dynamic), wait or nowait, ordered, bounds, and number of iterations. This command can be issued only from the thread that is currently executing the loop.
omp_serialize
Serialize the next encountered parallel region for the current thread.
Extensions of existing commands for OpenMP programs:
print -s expression
thread -info
what is name
where
New OpenMP events:
omp_barrier [type] [state]
Tracks the event of a thread entering a barrier.
omp_taskwait [state]
Tracks the event of a thread entering a taskwait.
omp_ordered [state]
Tracks the event of a thread entering an ordered region.
omp_critical
Tracks the event of a thread entering a critical region.
omp_atomic [state]
Tracks the event of a thread entering an atomic region.
omp_flush [type]
Tracks the event of a thread executing a flush.
omp_task [state]
Tracks the creation and termination of tasks.
omp_master
Tracks the event of a master thread entering the master region.
omp_single
Tracks the event of a thread entering a single region.
This section describes problems fixed in this release of Oracle Solaris Studio 12.2 dbx
Can't stop dbx execution when doing tracei step
The user is unable to stop dbx by typing control-C (^C) when doing a tracei step on a Solaris platform. This is actually a Solaris OS bug, but dbx was modified to work around the problem.
Unable to step into a instrumented debuglog uttsc binary
dbx did not correctly handle a C++ namespace alias in a lexical block. This created a problem where dbx could not step into a specially instrumented binary.
Threads related commands not available in dbx for multithreaded program instrumented with Purify
Purify adds suffixes to the names of all the shared libraries that it instruments. For example, libc.so.1 becomes libc.so.1_pure_p3_c0_1005282029_510_32. dbx made decisions based on the presence of libc.so.1, which was no longer being loaded. dbx now understands the _pure* suffix.
dbx unable to demangle certain GCC 4.x. sybx is unable to extract the program name from a core file on SLES 10.2
On an SuSE Linux Enterprise Server 10.2 system, dbx was unable to extract the program from a core file, because newer Linux systems include two note sections in a core file, and the second one is empty. dbx will get the name from the first section.
dbx finds copies of a constructor in gcc code
gcc sometimes generated multiple entries for a member, which included one in DWARF debug.pubnames section, one as prototype, and an abstraction instance. dbx needed to delete the prototype entry once its instance is seen and processed.
dbx is unable to extract program name from a core file on SLES 10.2
On an SuSE Linux Enterprise Server 10.2 system, dbx was unable to extract the program from a core file, because newer Linux systems include two note sections in a core file, and the second one is empty. dbx will get the name from the first section.
dbx gets SIGSEGV on printing a variable
When the executable is built from some object files (.o) that were not compiled with the -g option, and dbx needs to import one of these to evaluate the variable, the import could fail because dbx was not checking for this condition.
dbx — core segv if is not valid
dbx did not check for the the possibility of a zero length core file and did not handle it gracefully.
Memory and Disassembler windows can cause dbx to crash under IDE
If a debug session in the IDE was ended while displaying the Memory or Disassembler windows, and then the session was restarted, fronting either of these windows would crash the underlying dbx.