| Last Modified On : | February 26, 2009 4:54 PM PST |
Rate |
|
Introduction
This article provides an overview of the Intel® Debugger for Linux* as included with the Intel® C++ Compiler for Linux* 11.x Professional distribution. A more detailed whitepaper is attached in PDF format. The increased complexity of modern applications along with the advent of multi-core processor technology and concurrent multi-threaded program execution models makes thread specific runtime control and direct accessibility of threading properties inside of a debug solution ever more important. The Intel® Debugger for Linux* is a fully Eclipse* graphical user interface based debug solution with advanced features intended to achieve exactly that. In this whitepaper we will cover the capabilities of the Intel® Debugger for Linux* that address ways to enable faster coding issue identification and resolution. Please also have a close look at the more expansive whitepaper attached in PDF format.
Requirements
Hardware Platform: IA-32, Intel®64 architecture or compatible.
Software Platform: Linux* OS based environment
Java runtime environment (JRE 1.5 or JRE 1.6) to use the Eclipse* framework
The compatibility libstdc++ package for the standard GCC 3.4 C++ libraries. For Ubuntu Linux* the libstdc++5 package in version 3.3.6-15 can be downloaded directly through the apt-get installer. On the original Fedora Core* 6 i686 installation media it is named compat-libstdc++-33-3.2.3-61.i386.rpm.
The Intel® Debugger works with the following compilers:
Intel® C++ Compilers and Intel® Fortran Compilers
gcc, g++, and g77 compilers
See the Intel® Debugger Manual for additional information. Please also see the release notes for platform specific restrictions and known limitations of this release.
Motivation
The advent of more and more "multi"- and "many" core processors requires extensive use of parallel programming models to best take advantage of the benefits these systems provide to program execution flow and thus to get the best performance out of these systems. Using more and more advanced parallel programming techniques makes it however more and more difficult to keep track of all active threads and their possible data inter-dependencies. The purpose of the Intel® Debugger and it's new Eclipse Rich-Client Platform based graphical user interface together with the thread grouping and thread awareness capabilities is to pair the tools Intel provides for developing highly multi-threaded parallel applications with the debugger to allow for equally advanced and easily accessible features for coding issue resolution. Advanced parallel programming techniques call for advanced parallel debugging techniques to keep the executions flow and the analysis of runtime problems straight forward and allow for speedy error corrections.
Intel's compilers generate high quality symbol information even when advanced optimization techniques are being used and thus enable effective debugging on the wide variety of platforms they support. Intel compilers work with native debuggers, the Intel® Debugger, and selected third-party debuggers. Conversely the Intel® Debugger and it's advanced GUI and threading awareness can be used with application code generated by a variety of compilers. The added value provided by the Intel® Debugger includes enhanced visibility and more in depth understanding of
Overview
The Intel® Debugger for Linux* is a component of the Intel® C++ Compiler Professional Edition for Linux* and Intel® Fortran Compiler Professional Edition for Linux* product. It is a full-featured symbolic source-code application debugger that helps programmers locate run-time programming errors (i.e., incorrect code, memory leaks, stack overflows, unexpected exceptions or other algorithmic problems) in their code. The Intel® Debugger can debug both single and multi-threaded applications, serial and parallel code. In it's latest version we added enhanced thread awareness and thread-specific breakpoint handling. The application run-time control supports the concepts of lock-step stepping following a thread syncpoint, defining thread teams and even forced serialized execution of parts of your threaded application. Additionally we now provide OpenMP* windows with information about current tasks, teams, task waits, barriers, task spawn trees and locks. Finally an SSE Windows was added that gives you access to SSE registers commonly used for data vectorization and single instruction multipe data (SIMD) handling. It displays vectors as rows (or columns) in a table display with ways to change the representation of the data in those registers that makes their use in the debuggee application as well as the actual data mapping to the underlying hardware more transparent.
In the latest update with the Intel(R) Debugger 11.1 two additional features supporting debugging of parallel code using OpenMP* have been added. Thread Data Sharing Event Detection allows the user to trigger on read/write accessess to data structures that are shared between multiple threads. You can stop on these events or just log them and point to the exact source location where they occur. This allows to identify possible data sharing violations as they occur during a debug session. Following a similar concept you can also stop execution on function re-entrancy. If one function is entered by two threads at the same time that usually means that additional precautions for thread safety need to be taken.
Graphical User Interface
The Intel® Debugger by default is launched using the idb executable in the /opt/intel/Compiler/11.x/xxx/bin/intel64
or
/opt/intel/Compiler/11.x/xxx/bin/ia32
directory. Unless you use the iidb executable instead this will launch the full Eclipse* Rich Client Platform based GUI of the debugger.
The graphical user interface supports a rich user experience with intuitive access to all the standard debug features like stepping, breakpoints, callstack, source code switching, disassembly, variable views, and memory windows.
Thread-Awareness
The Intel® Debugger allows for increased thread run-time control during debug sessions with flexible thread execution models. It is possible to pick an individual focus thread for single stepping, halt and release inidvidual threads or pick a threas that should be under run-time control while the other threads are either halted or running freely.
This feature set is made even more useful by the ability to pick a group of threads either by selecting one of the debugger’s default groups or by defining a new thread group that you would like to apply breakpoints, single steps or other debugger control events to.
The thread-specific run-time control features extend to breakpoints as well. The full range of thread-grouping features can be used to select which applicaton threads code and data breakpoints shall be applied to.
To alter the parallel execution flow of all the threads in a given thread group something called syncpoints has been implemented in the Intel® Debugger. A Syncpoint allows to have all threads in a trigger group stop execution at one defined point. From this syncpoint the developer can then do syncronized locked stepping. This behavior of a syncpoint is very similar to how a thread barrier would act in regular parallel code execution flow. The difference is that the debugger allows you to temporarily simulate this execution flow behavior to better understand interactions between different threads and identify possible threading issues
To go one step further and essentially turn off parallel execution for a parallel section of the application code it is also possible to force serialized eyecution of a parallel application implemented with OpenMP*. This can be quite useful to clarify whether a runtime issue is caused by a serial algorithmic problem or has been introduced when OpenMP* directives were added. The code segment of the parallel region associated with the current program counter memory location will be put into serial single-threaded execution mode.
Last but not least the Intel® Debugger adds OpenMP* property windows. This feature displays and allows to monitor currently active OpenMP* threads, teams, barriers, locks, spawn trees and taskwaits in the debugged application, along with the exact curent execution state of all OpenMP* threads.
| June 5, 2009 9:05 AM PDT
Robert MuellerAlbrecht (Intel)
|
There is a command reference available at http://www.intel.com/cd/software/products/asmo-na/eng/406036.htm. The debugger user manual itelf is only available in html format inside the debugger installaion itself. /opt/intel/Compiler/11.x/xxx/Documentation/idb There also is a more complete Eclipse based online help available inside the debugger GUI. Since we have our own Eclipse RCP based GUI which is way more powerful than DDD, the support for DDD has been deprecated. I cannnot guarantee that it will still work. A good way to start would be to use the command line binary of idb ./idbc for the integration. |
| August 4, 2009 9:01 AM PDT
DAVID GALILI |
Hello do you have support for Intel(R) Debugger for Linux* (IDB) in ISRAEL Thanks David |
| August 5, 2009 11:27 AM PDT
Robert MuellerAlbrecht (Intel)
|
With Ubuntu 8.x and Fedora* 9 or Fedora* 10 there can be a problem displaying the Intel(R) Debugger Online Help. The problem is due to a proxy setting configuration issue in Firefox*, where Eclipse is prevented from connecting to the local help server. The proxy can handle "localhost" but not 127.0.0.1 which is the loopback of the localhost. |
| August 5, 2009 11:29 AM PDT
Robert MuellerAlbrecht (Intel)
|
Hi David, debugger support is owned by the Compiler TCE team. There are colleagues of mine in Germany that are like me more debugger focused, since quite abit of our debugger development is done there. I'll send you an email on this. |
| August 17, 2009 7:00 AM PDT
Angela Sigmund |
When I bring up the debugger I get invisible source code. How does one fix this? Thanks, Angie |
| September 2, 2009 8:33 AM PDT
dan0112
|
Hi I am trying to use idb 11.0 from within eclipse sdk 3.4.1. I have searched on this forum and elsewhere, but it seems that the explanations always refer to older versions (idb 10.1) and are not applicable. Let me know if u need further information. Thanks a lot. Daniel |
| September 2, 2009 8:38 AM PDT
Robert MuellerAlbrecht (Intel)
|
Hi Dan, since we have our own full blown Eclipse based GUI that provides features beyond what can be done with CDT integration we don't actively work on the CDT integration part any more. That said, everything that is states in the 10.1 documentation is actually still working, except that you will need to make sure to link in ./idbc (the comman dline debugger call command), instead of ./idb (which would try to call IDB's Eclispe RCP GUI. Thanks, Rob |
| September 2, 2009 8:41 AM PDT
Robert MuellerAlbrecht (Intel)
|
Hi Angie, is your applicatio nbuild with -g (symbol info enabled). You can double check with using readelf on your executable file. Your problem could also be one of path mapping although the debugger should ask you to provide the correct source path i this was the issue. Lastly if you are debuging a runtime loaded shared object yo may need to add the binary path for that shared object to your library search path. Thanks, Rob |
| September 2, 2009 10:18 AM PDT
dan0112
|
Hi Rob, thanks for your quick reply. I checked again, and as far as I can see, the documentation for using IDB 10.1 with eclipse is not applicable to 11.0, for two reasons: (1) the menus described for eclipse do not exist anymore, and (2) the folder structure described for IDB 10.1 does not exist anymore (in particular there is no eclipse directory in 11.0) - see for example http://www.intel.com/software/products/compilers/docs/clin/i..... clipse.htm (and others). Please let me know if you have a different documentation. I am not sure what u mean by 'link in ./idbc'. I tried to define idbc as the debugger in the Run/Debug Settings (launch configuration properties) of my eclipse project, instead of the default gdb. I then get the following error message: Error initializing shared library options: Not implemented: gdb_show_solib_search_path I also tried iidb as the debugger. In that case I got the error message: Error creating session iidb: error while loading shared libraries: libPostOffice.so: cannot open shared object file: No such file or directory I am still relatively new to all this, so I greatly appreciate your help. Thanks a lot Daniel PS: I tried the IDB 11.0 GUI, but I can't see how to look at variables, or put expressions on watch and the like. Where can I find an easy Intro guide for that? |
| September 11, 2009 11:58 AM PDT
aleks vadnjal |
I’m trying to ./install Intel Fortran compiler 11.046 on Linux Centos OS distro, but have problems getting JRE being recognized by interactive install. However I have 2 compatible JRE installed on…. /usr/java/jre1.5.0_11/ /usr/java/jdk1.6.0_03/jre/ …and for some reason install script missed them both. Could you please advise on how to get my JRE working with idb? Thank you! |
| October 26, 2009 3:40 AM PDT
joex26
|
I have the same error running iidb: iidb: error while loading shared libraries: libPostOffice.so: cannot open shared object file: No such file or directory How I can solve it? Please help |
| October 26, 2009 10:27 AM PDT
Robert MuellerAlbrecht (Intel)
|
Hi Aleks, normally if you do a JRE install from the RPM at java.com or from your OS repository / package manager the installation should work without problems. One possibility could be that you have an ia32 compiler/debugger installation on an Intel64 system. As far as 64bit support goes the JRE and the debugger need to match. |
| October 26, 2009 10:49 AM PDT
Robert MuellerAlbrecht (Intel)
|
Hi Joe and Dan, On the error message: iidb: error while loading shared libraries: libPostOffice.so: cannot open shared object file: No such file or directory This should be caused simply by an incomplete environment setup on your system. If you go to /opt/intel/Compiler/11.x/xxx/bin you should find something like fortvars.sh or iccvars.sh depending on your installaiton that handles the complete environment setup for you. The type of enviornment setting that is probably missing for you would be export LD_LIBRARY_PATH=/opt/intel/Compiler/11.0/069/idb/lib/intel64:$LD_ LIBRARY_PATH To set breakpoints or wathcpoints there is a Debug>breakpoint menu entry and there also is a stop sign (may also look like a red flower to you) in the debugger icon bar. There also is a variable browser, locals window and a freely definable variables window available. I guess the easiest would be to hover over the button bar and look at the mouse-over hints - if it is not obvious which those are. |
| November 21, 2009 5:38 AM PST
Pierre |
Whether I setup idb, idbc, or iidb from the Eclipse Galileo 'Debug Configuration' options, I invariably get a disassembly dump rather than my source code files. I have entered the source actual code path in the 'Source' tab (/Project/Source1, /Project/Source2). When I run idb, it launches separately (java GUI) and lists the cc8mSUAH.s / crti.S / init.c / initfini.c source files instead of my code (it tries to find my code in the /Project/Release folder rather than in /Project/Source1). Any idea about how I can tell the Intel Debugger to look at the Source Code Path setup (under the "Debug Configuration") in Eclipse? Thanks! Pierre. |
| November 21, 2009 6:26 AM PST
Pierre |
. It works like a charm now I have put all my source files in one large (and ugly) directory. . Support for splitting source code to several folders should not be that difficult to get working... maybe for the next release. Pierre. |

English | 中文 | Русский | Français
Robert MuellerAlbrecht (Intel)
|
Haw-Jye (Howard) Shyu
We are using the new version of Intel debugger in our lab but have problem in using the DDD as the front end for the IDB.
Sincerely,
Haw-Jye (Howard) Shyu