Qt Creator ManualTests DebuggerLldb: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Only some test functions)
(Point to test projects and improve descriptions)
Line 1: Line 1:
[[Category:Tools::QtCreator::QualityAssurance]]
[[Category:Tools::QtCreator::QualityAssurance]]
The needed code is provided by the project tests/manual/debugger/simple/simple.pro inside Creator's source repository.


{| class="wikitable"
{| class="wikitable"
|+ Debugger lldb
|+ Tests using '''tests/manual/debugger/simple/simple.pro''' from Qt Creator's source repository
! Test  
! Test  
! Result  
! Result  
Line 13: Line 8:
|-
|-
| Create new project. Can you build, run and debug it?  
| Create new project. Can you build, run and debug it?  
| automated on Mac
| automated
|  
|  
|-
|-
Line 56: Line 51:
|
|
|-
|-
| Switch on temporarily 'Operate by Instruction' and check whether you see disassembler output and can step by instruction
| Switch on temporarily 'Operate by Instruction' and check whether you see disassembler output and can step by instruction
|
|
|
|-
|}
 
{| class="wikitable"
|+ Tests using '''tests/manual/debugger/cli-io/cli-io.pro''' from Qt Creator's source repository
! Test
! Result
! Annotation
|+
| Check I/O (qDebug, std::cout, std::cerr)  
| Check I/O (qDebug, std::cout, std::cerr)  
|  
|  
|  
|  
|-
|-
| Check "Run in Terminal". Use Terminal for input. (Debbuging might not work on Ubuntu)
| Check "Run in Terminal". Use Terminal for input.
|  
|  
|  
|  
|-
|-
| Check nothing bad happens on a simple int main() {} program with no breakpoints set  
| Check nothing bad happens on a simple int main() {} program with no breakpoints set  
| automated on Mac
| automated
|  
|
|-
|}
| Attach to a core file (Linux/Mac: ulimit –c unlimited)
 
{| class="wikitable"
|+ Tests using '''tests/manual/debugger/gui/gui.pro''' from Qt Creator's source repository
! Test
! Result
! Annotation
|+
|
# Run the project.
# Click the button "Crash".<br/>It should write a core file to the working directory. Depending on the operating system, you might have to set "ulimit &ndash;c unlimited" and/or disable OS-specific crash-reporting mechanisms.
# Attach Creator to the core file.<br/>Verify that you see a stacktrace, variable values and code markers just as if you had run the application in the debugger from the beginning.
|  
|  
|  
|  
|-
|-
| Attach to a running process (might not work on Ubuntu)
|
# Start the project from outside Creator, e.g. from the command line.
# Attach Creator to the running process.<br/>Verify that you see a stacktrace, variable values and code markers just as if you had run the application in the debugger from the beginning. You should also be able to pause/continue the execution.
|  
|  
|  
|  

Revision as of 10:46, 4 August 2021


Tests using tests/manual/debugger/simple/simple.pro from Qt Creator's source repository
Test Result Annotation
Create new project. Can you build, run and debug it? automated
Set breakpoint, press F5 / Cmd + Y to build and run debugger, verify that program stops at a breakpoint that you set:
  • in main function 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 lldb: Do classes like QImage or std::string show beautiful information instead of the raw structure? automated
Step through some (not all) test* functions and check whether the displayed data looks sane
Comment out the return statement inside the following functions one by one. Check whether you'll end up with a proper stack trace & locals display.
  • testNullPointerDeref()
  • testNullReference()
  • testEndlessLoop(); (break manually)
  • testEndlessRecursion();
  • testUncaughtException();
Test a breakpoint in a QThread:
  1. Uncomment the call to qthread::testQThread()
  2. Place a breakpoint in qthread::Thread::run()
  3. Run this in the debugger
  4. Make sure that:
    • the breakpoint receives the right number of hits
    • "Locals and Expressions" and "Stack" views show reasonable data, including the object names of the threads
Switch on temporarily 'Operate by Instruction' and check whether you see disassembler output and can step by instruction
Tests using tests/manual/debugger/cli-io/cli-io.pro from Qt Creator's source repository
Test Result Annotation
Check I/O (qDebug, std::cout, std::cerr)
Check "Run in Terminal". Use Terminal for input.
Check nothing bad happens on a simple int main() {} program with no breakpoints set automated
Tests using tests/manual/debugger/gui/gui.pro from Qt Creator's source repository
Test Result Annotation
  1. Run the project.
  2. Click the button "Crash".
    It should write a core file to the working directory. Depending on the operating system, you might have to set "ulimit –c unlimited" and/or disable OS-specific crash-reporting mechanisms.
  3. Attach Creator to the core file.
    Verify that you see a stacktrace, variable values and code markers just as if you had run the application in the debugger from the beginning.
  1. Start the project from outside Creator, e.g. from the command line.
  2. Attach Creator to the running process.
    Verify that you see a stacktrace, variable values and code markers just as if you had run the application in the debugger from the beginning. You should also be able to pause/continue the execution.
Test unusual situations: Kill X 'externally' while debugging (both in a 'running' and 'stopped' state), where X is
  • the debugged program
  • lldb