source: trunk/doc/src/development/debug.qdoc@ 730

Last change on this file since 730 was 651, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.2 sources.

  • Property svn:eol-style set to native
File size: 10.5 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the documentation of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42/*!
43 \page debug.html
44 \title Debugging Techniques
45
46 Here we present some useful hints to help you with debugging your
47 Qt-based software.
48
49 \tableofcontents
50
51 \section1 Configuring Qt for Debugging
52
53 When \l{Installation}{configuring Qt for installation}, it is possible
54 to ensure that it is built to include debug symbols that can make it
55 easier to track bugs in applications and libraries. However, on some
56 platforms, building Qt in debug mode will cause applications to be larger
57 than desirable.
58
59 \section2 Debugging in Mac OS X and Xcode
60
61 \section3 Debugging With/Without Frameworks
62
63 The basic stuff you need to know about debug libraries and
64 frameworks is found at developer.apple.com in:
65 \l{http://developer.apple.com/technotes/tn2004/tn2124.html#SECDEBUGLIB}
66 {Apple Technicle Note TN2124} Qt follows that.
67
68 When you build Qt, frameworks are built by default, and inside the
69 framework you will find both a release and a debug version (e.g.,
70 QtCore and QtCore_debug). If you pass the \c{-no-framework} flag
71 when you build Qt, two dylibs are built for each Qt library (e.g.,
72 libQtCore.4.dylib and libQtCore_debug.4.dylib).
73
74 What happens when you link depends on whether you use frameworks
75 or not. We don't see a compelling reason to recommend one over the
76 other.
77
78 \section4 With Frameworks:
79
80 Since the release and debug libraries are inside the framework,
81 the app is simply linked against the framework. Then when you run
82 in the debugger, you will get either the release version or the
83 debug version, depending on whether you set \c{DYLD_IMAGE_SUFFIX}.
84 If you don't set it, you get the release version by default (i.e.,
85 non _debug). If you set \c{DYLD_IMAGE_SUFFIX=_debug}, you get the
86 debug version.
87
88 \section4 Without Frameworks:
89
90 When you tell \e{qmake} to generate a Makefile with the debug
91 config, it will link against the _debug version of the libraries
92 and generate debug symbols for the app. Running this program in
93 GDB will then work like running GDB on other platforms, and you
94 will be able to trace inside Qt.
95
96 \section3 Debug Symbols and Size