Qt Creator ManualTests DebuggerLldb: Difference between revisions
No edit summary |
(→Test 2) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 54: | Line 54: | ||
#Run this in the debugger | #Run this in the debugger | ||
#Make sure that: | #Make sure that: | ||
#*the breakpoint receives the right number of hits (doesn't work on macOS) | #*the breakpoint receives the right number of hits (doesn't work on macOS according to Marcus) | ||
#*"Locals and Expressions" and "Stack" views show reasonable data, including the object names of the threads | #*"Locals and Expressions" and "Stack" views show reasonable data, including the object names of the threads | ||
| | | | ||
Line 73: | Line 73: | ||
| | | | ||
|- | |- | ||
|Check "Run in Terminal". Use Terminal for input. | |Check "Run in Terminal". Use Terminal for input. Note that without "Run In Terminal" stdin won't work, the Application Output pane can't receive input. So it acts as if input was already given. | ||
| | | | ||
| | | | ||
Line 88: | Line 88: | ||
| | | | ||
* '''Notes for macOS:''' | * '''Notes for macOS:''' | ||
** Be sure you have the "/ | ** Be sure you have the "/cores" (under the root) folder (with sufficient permissions if you don't want to run your app as a root). Even as root it didn't work for Alexandru, until he ran '''sudo chmod 777 /cores''' | ||
** Check if the core dumps are enabled with "'''sysctl kern.coredump'''". It should return 1. Otherwise you can set it by "'''sysctl kern.coredump 1'''". | ** Check if the core dumps are enabled with "'''sysctl kern.coredump'''". It should return 1. Otherwise you can set it by "'''sysctl kern.coredump 1'''". | ||
** The application must be signed, which the project build should do automatically. If you face issues, check that the build resulted in a "codesign" call. The codesign call also includes the right "entitlements" via the entitlements.plist that is included in the sources, which sets "get-task-allow". This is required to get "attachable" permission to your application (as of macOS 12.5, see [https://developer.apple.com/library/archive/technotes/tn2415/_index.html#:~:text=and%20UIPasteboard%20sharing.-,get%2Dtask%2Dallow,-The%20boolean%20value Apple official documentation]). Then you can access the memory of your app and get the core dump. | ** The application must be signed, which the project build should do automatically. If you face issues, check that the build resulted in a "codesign" call. The codesign call also includes the right "entitlements" via the entitlements.plist that is included in the sources, which sets "get-task-allow". This is required to get "attachable" permission to your application (as of macOS 12.5, see [https://developer.apple.com/library/archive/technotes/tn2415/_index.html#:~:text=and%20UIPasteboard%20sharing.-,get%2Dtask%2Dallow,-The%20boolean%20value Apple official documentation]). Then you can access the memory of your app and get the core dump. | ||
Line 102: | Line 102: | ||
#Run the project. | #Run the project. | ||
#Click the button "Crash".<br />It should write a core file to the working directory (on macOS its in "/cores". Depending on the operating system, you might have to set "'''ulimit –c unlimited'''" and/or disable OS-specific crash-reporting mechanisms. | #Click the button "Crash".<br />It should write a core file to the working directory (on macOS its in "/cores". Depending on the operating system, you might have to set "'''ulimit –c unlimited'''" and/or disable OS-specific crash-reporting mechanisms. | ||
#Attach Creator to the core file.<br />Verify that you see a stack trace, variable values and code markers just as if you had run the application in the debugger from the beginning. | #Attach Creator to the core file (Debug menu -> Start Debugging -> Load Core file).<br />Verify that you see a stack trace, variable values and code markers just as if you had run the application in the debugger from the beginning. | ||
| | | | ||
| | | |
Latest revision as of 13:59, 9 July 2024
Test 1
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:
|
||
"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. If using an online installer Qt, after installing the sources via the maintenance tool, make sure to map the CI sources to local sources in Qt Creator Preferences -> Debugger -> General -> click Add Qt Sources... button -> select ~/Dev/qt/6.x.y/Src directory -> Save preferences |
||
Test debugging helpers/python lldb: Do classes like QImage or std::string show beautiful information instead of the raw structure?
To view the QImage as an image, right-click the QImage row in the locals -> Change Value Display Format -> Change display "Separate Window" -> expand the image row in the locals -> a new window should appear with the image contents |
automated | |
Step through some (not all) test* functions and check whether the displayed data looks correct | The code contains comments with the expected displayed data. These are meant for semi-automatic runs and might differ from what you see. Use your own judgement what's correct and what's not. | |
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.
|
||
Test a breakpoint in a QThread:
|
||
Switch on temporarily 'Operate by Instruction' (small icon above the stack trace) and check whether you see disassembler output and can step by instruction |
Test | Result | Annotation |
---|---|---|
Check I/O (qDebug, std::cout, std::cerr) | ||
Check "Run in Terminal". Use Terminal for input. Note that without "Run In Terminal" stdin won't work, the Application Output pane can't receive input. So it acts as if input was already given. | ||
Check nothing bad happens on a simple int main() {} program with no breakpoints set | automated |
Test 2
Tests using tests/manual/debugger/gui/gui.pro from Qt Creator's source repository
|
Test | Result | Annotation |
---|---|---|
|
||
|
||
Test unusual situations: Kill X 'externally' while debugging (both in a 'running' and 'stopped' state), where X is
|
Test | Result | Annotation |
---|---|---|
Run the project without checking "Run as root user" on the run settings page.
|
||
Debug the project without checking "Run as root user" on the run settings page.
|
||
Run the project with checking "Run as root user" on the run settings page.
|
||
Debug the project with checking "Run as root user" on the run settings page.
|
||
Is entering invalid credentials handled correctly? |