-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Add docs describing how the thread plan stack affects stepping #110167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -536,6 +536,33 @@ This command will run the thread in the current frame until it reaches line 100 | |
| in this frame or stops if it leaves the current frame. This is a pretty close | ||
| equivalent to GDB's ``until`` command. | ||
|
|
||
| One other useful thing to note about the lldb stepping commands is that they | ||
| are implemented as a stack of interruptible operations. Until the operation - | ||
| e.g. step to the next line - is completed, the operation will remain on the | ||
| stack. If it is interrupted, new stepping commands will result in their | ||
|
||
| operations being pushed onto the stack, each of them retired as they are completed. | ||
|
|
||
| Suppose, for instance, you ``step-over`` a source line, and hit a breakpoint | ||
| in a function called by the code of the line you are stepping over. Since the step-over | ||
|
||
| operation remains on the stack, you can examine the state at | ||
| the point of the breakpoint hit, step around in that frame, step in to other | ||
| frames, hit other breakpoints, etc. Then when you are done, a simple ``continue`` | ||
|
||
| will resume the original ``step-over`` operation, only ending when the desired line is reached. | ||
| This saves you from having to manually issue some number of ``step-out`` commands | ||
| to get back to the frame you were stepping over. | ||
|
|
||
| Hand-called functions using the ``expr`` command are also implemented by | ||
| operations on this same stack. So if you are calling some code with the ``expr`` command, | ||
| and hit a breakpoint during the evaluation of that code, you can examine | ||
| the state where you stopped, step around at your convenience, and then issue a | ||
| ``continue`` which will finish the expression evaluation operation and print the function | ||
| result. | ||
|
|
||
| You can examine the state of the operations stack using the ``thread plan list`` | ||
| command, and if, for instance, you decide you don't actually want that outermost | ||
| next to continue running, you can remove it with the ``thread plan discard`` | ||
| command. | ||
|
|
||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Suggestion: Perhaps mention the thread plan logging channel?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you mean the
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's a fire-hose for sure, but OTOH, it's the only way to watch the machinery happen. It will be clear right away when you turn it on whether that info is for you or not... |
||
| A process, by default, will share the LLDB terminal with the inferior process. | ||
| When in this mode, much like when debugging with GDB, when the process is | ||
| running anything you type will go to the ``STDIN`` of the inferior process. To | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggestion:
Until the operation - ... - is completed, it will remain ...You have
the operationwritten multiple times here, I think it will flow better if you shorten that one.Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At the risk of releasing the bike-shedding kraken, I personally dislike some pronouns in technical docs. It's very easy to accidentally create ambiguity with pronouns, whereas repetition of the noun is always precise. Your suggestion is safe though