Qt Creator ManualTests DebuggerGdb: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Decode HTML entity numbers)
(Fix import)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
[[Category:Tools::QtCreator::QualityAssurance]]
[[Category:Tools::QtCreator::QualityAssurance]]
= Qt Creator Manual Tests: Debugger g++/gdb =


tests/manual/debugger/simple/simple.pro and tests/manual/debugger/cli-io/cli-io.pro provide the needed code
tests/manual/debugger/simple/simple.pro and tests/manual/debugger/cli-io/cli-io.pro provide the needed code


{background:#009900}. |''. Test |''. Result |_. Annotation |
{| class="wikitable"
| Create new project. Can you build, run and debug it? | automated, except on Mac | |
|+ Debugger g++/gdb
! Test
! Result
! Annotation
|+
| Create new project. Can you build, run and debug it?
| automated
|
|+
| Set breakpoint, press F5 to build and run debugger, verify that program stops at breakpoint:
| Set breakpoint, press F5 to build and run debugger, verify that program stops at breakpoint:
* on main before program is started
* on main before program is started
* while the program is running
* while the program is running
* in dynamically loaded plugins, especially in constructors
* in dynamically loaded plugins, especially in constructors
* on a bit of code that was commented out. Make sure it is moved on debugger startup to the first line producing real code below that position and that it is hit there. | | |
* on a bit of code that was commented out. Make sure it is moved on debugger startup to the first line producing real code below that position and that it is hit there.
|
|
|+
| "Step into" a couple of times. Can you step into Qt source code ('''*.cpp''' file under QTDIR)?
| "Step into" a couple of times. Can you step into Qt source code ('''*.cpp''' file under QTDIR)?
(Mac: switch on 'Use Debug Versions of Frameworks' in run configuration. You need Qt sources.) | | |
(Mac: switch on 'Use Debug Versions of Frameworks' in run configuration. You need Qt sources.)
| Test debugging helpers/python gdb: Do classes like QImage or std::string show beautiful information instead of the raw structure? | | |
|
| Step through some test* functions and check whether the displayed data looks sane | | |
|
|+
| Test debugging helpers/python gdb: Do classes like QImage or std::string show beautiful information instead of the raw structure?
|
|
|+
| Step through some test* functions and check whether the displayed data looks sane
|
|
|+
| Comment out the return statement before the following code lines or inside the respective functions one by one. Check whether you'll end up with a proper stack trace & locals display.
| Comment out the return statement before the following code lines or inside the respective functions one by one. Check whether you'll end up with a proper stack trace & locals display.
* '''<span class="* int">0 = a + b;
* *(int *)0 = a + b;
</span>''' testNullReferenceHelper(pp, qq);
* testNullReferenceHelper(pp, qq);
* testEndlessLoop(); (break manually)
* testEndlessLoop(); (break manually)
* testEndlessRecursion();
* testEndlessRecursion();
* testUncaughtException();| | |
* testUncaughtException();
| Switch on temporarily 'Operate by Instruction' and check whether you see disassembler output and can step by instruction | | |
|
| Check I/O (qDebug, std::cout, std::cerr), on Win for both Debug and Release. Please read the below note! | | |
|
| Check "Run in Terminal". Use Terminal for input. (Debbuging might not work on Ubuntu) | | |
|+
| Check nothing bad happens on a simple int main() {} program with no breakpoints set | automated, except on Mac | |
| Switch on temporarily 'Operate by Instruction' and check whether you see disassembler output and can step by instruction
| Linux/Mac: Attach to a core file (ulimit -c unlimited) | | |
|
| Attach to a running process (might not work on Ubuntu) | | |
|
|+
| Check I/O (qDebug, std::cout, std::cerr), on Win for both Debug and Release. Please read the below note!
|
|
|+
| Check "Run in Terminal". Use Terminal for input. (Debbuging might not work on Ubuntu)
|
|
|+
| Check nothing bad happens on a simple int main() {} program with no breakpoints set
| automated
|
|+
| Linux/Mac: Attach to a core file (ulimit -c unlimited)
|
|
|+
| Attach to a running process (might not work on Ubuntu)
|
|
|+
| Try remote debugging: start a gdbserver using e.g.
| Try remote debugging: start a gdbserver using e.g.
<code>gdbserver localhost:1234 ./fakevim<code>
<code>gdbserver localhost:1234 ./fakevim</code>
in creator/tests/manual/fakevim on a Linux machine and connect to it | | |
in creator/tests/manual/fakevim on a Linux machine and connect to it
|
|
|+
| Test unusual situations: Kill X 'externally' while debugging (both in a 'running' and 'stopped' state), where X is
| Test unusual situations: Kill X 'externally' while debugging (both in a 'running' and 'stopped' state), where X is
* the debugged program
* the debugged program
* gdb | | |
* gdb
|
|
|}


== stderr/stdout handling on Windows ==
== stderr/stdout handling on Windows ==


* An application needs to be built with 'console' for stderr/stdout to appear (use Creators "Run in terminal" setting)
* An application needs to be built with 'console' for stderr/stdout to appear (use Creator's "Run in terminal" setting)
* Creator itself is built with 'console' in debug mode only.
* Creator itself is built with 'console' in debug mode only.
* qDebug() prints to stderr for ‘console’ apps, else to the Windows debugger log, which can be shown with the DbgView utility

Revision as of 15:49, 24 March 2015


tests/manual/debugger/simple/simple.pro and tests/manual/debugger/cli-io/cli-io.pro provide the needed code

Debugger g++/gdb
Test Result Annotation
Create new project. Can you build, run and debug it? automated
Set breakpoint, press F5 to build and run debugger, verify that program stops at breakpoint:
  • on main before program is started
  • while the program is running
  • in dynamically loaded plugins, especially in constructors
  • on a bit of code that was commented out. Make sure it is moved on debugger startup to the first line producing real code below that position and that it is hit there.
"Step into" a couple of times. Can you step into Qt source code (*.cpp file under QTDIR)?

(Mac: switch on 'Use Debug Versions of Frameworks' in run configuration. You need Qt sources.)

Test debugging helpers/python gdb: Do classes like QImage or std::string show beautiful information instead of the raw structure?
Step through some test* functions and check whether the displayed data looks sane
Comment out the return statement before the following code lines or inside the respective functions one by one. Check whether you'll end up with a proper stack trace & locals display.
  • *(int *)0 = a + b;
  • testNullReferenceHelper(pp, qq);
  • testEndlessLoop(); (break manually)
  • testEndlessRecursion();
  • testUncaughtException();
Switch on temporarily 'Operate by Instruction' and check whether you see disassembler output and can step by instruction
Check I/O (qDebug, std::cout, std::cerr), on Win for both Debug and Release. Please read the below note!
Check "Run in Terminal". Use Terminal for input. (Debbuging might not work on Ubuntu)
Check nothing bad happens on a simple int main() {} program with no breakpoints set automated
Linux/Mac: Attach to a core file (ulimit -c unlimited)
Attach to a running process (might not work on Ubuntu)
Try remote debugging: start a gdbserver using e.g.
gdbserver localhost:1234 ./fakevim

in creator/tests/manual/fakevim on a Linux machine and connect to it

Test unusual situations: Kill X 'externally' while debugging (both in a 'running' and 'stopped' state), where X is
  • the debugged program
  • gdb

stderr/stdout handling on Windows

  • An application needs to be built with 'console' for stderr/stdout to appear (use Creator's "Run in terminal" setting)
  • Creator itself is built with 'console' in debug mode only.
  • qDebug() prints to stderr for ‘console’ apps, else to the Windows debugger log, which can be shown with the DbgView utility