Development/Tutorials/Debugging/Debugging symbols: Difference between revisions

From KDE TechBase
(Created page with 'Debugging symbols allow you to debug your application better. Debugging symbols are added to your binary by the compiler. You have to decide during the cmake step if you want deb...')
 
(Replaced content with "{{Moved To Community | Guidelines_and_HOWTOs/Debugging }}")
 
(19 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Debugging symbols allow you to debug your application better. Debugging symbols are added to your binary by the compiler. You have to decide during the cmake step if you want debugging symbols or not. To compile your application with debugging symbols, use
{{Moved To Community | Guidelines_and_HOWTOs/Debugging }}
cmake . -DCMAKE_BUILD_TYPE=debugfull
to compile it without debugging symbols, use
cmake . -DCMAKE_BUILD_TYPE=release
Depending on your decision, output generated with the command kDebug will also be (debugfull) or not be (release) added to your application.
 
As an example, let's start with a hello world application.
 
'''main.cpp'''
                   
<pre>                                                                                                         
#include <KApplication>                                                                                       
#include <KAboutData>                                                                                           
#include <KCmdLineArgs>                                                                                     
#include <KMessageBox>                                                                                               
                                                                                                                                                                   
int main (int argc, char *argv[])
{
    KAboutData aboutData(
                        // The program name used internally.
                        "tutorial1",
                        // The message catalog name
                        // If null, program name is used instead.
                        0,
                        // A displayable program name string.
                        ki18n("Tutorial 1"),
                        // The program version string.
                        "1.0",
                        // Short description of what the app does.
                        ki18n("Displays a KMessageBox popup"),
                        // The license this code is released under
                        KAboutData::License_GPL,
                        // Copyright Statement
                        ki18n("(c) 2007"),
                        // Optional text shown in the About box.
                        // Can contain any information desired.
                        ki18n("Some text..."),
                        // The program homepage string.
                        "http://tutorial.com/",
                        // The bug report email address
                        "[email protected]");
 
    KCmdLineArgs::init( argc, argv, &aboutData );
    KApplication app;
    KGuiItem yesButton( i18n( "Hello" ), QString(),
                        i18n( "This is a tooltip" ),
                        i18n( "This is a WhatsThis help text." ) );
    KMessageBox::questionYesNo( 0, i18n( "Hello World" ),
                                i18n( "Hello" ), yesButton );
    return 0;
}
</pre>
'''CMakeLists.txt'''
<pre>
project (tutorial1)
find_package(KDE4 REQUIRED)
include (KDE4Defaults)
include_directories(${KDE4_INCLUDES})
set(tutorial1_SRCS main.cpp)
kde4_add_executable(tutorial1 ${tutorial1_SRCS})
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
install(TARGETS tutorial1  ${INSTALL_TARGETS_DEFAULT_ARGS})
</pre>
Now let's compile this without debugging symbols:
cmake . -DCMAKE_BUILD_TYPE=release

Latest revision as of 09:01, 5 August 2016

This page is now on the community wiki.