This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2012年02月24日 19:47 by ltaylor934, last changed 2022年04月11日 14:57 by admin.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| debug-running-or-stopped.py | ltaylor934, 2012年02月24日 19:47 | Trivial cpu-intensive loop | ||
| Issue14111.patch | roger.serwy, 2012年02月27日 05:30 | review | ||
| 0001-WIP.patch | louielu, 2017年05月24日 09:38 | |||
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 1821 | open | louielu, 2017年05月26日 04:04 | |
| Messages (11) | |||
|---|---|---|---|
| msg154150 - (view) | Author: Larry A. Taylor (ltaylor934) | Date: 2012年02月24日 19:47 | |
The attached script runs a long processing loop. Start it in IDLE. Open the script and run it. Press control-C. Result: message, KeyboardInterrupt with traceback message. In shell window, turn on Debugger. Run the script. Press control-C. Result: Restrat message shown in Python Shell. Debug Control shows no change. Expected behavior: For keyboard interrupt, or for any uncaught exception, Debug Control should show the same information as if there was a breakpoint. For instance, the stack with line numbers, locals and globals. Better: make a way to interrupt the program in a long loop or process, so that the programmer can tell -- live -- where the program is, and where most of the time is being used. Then use the regular buttons, Go, etc. to continue the process, possibly interrupted again. Also: the IDLE Python Shell and Debug Control show no "running" indicator, so there is no easy way to tell if the program is still going. |
|||
| msg154433 - (view) | Author: Roger Serwy (roger.serwy) * (Python committer) | Date: 2012年02月27日 05:30 | |
I can confirm the issue Larry's raises. Attached is a patch against 2.7 to enable Ctrl+C interrupts for the debugger. The patch opens up the possibility of making "Go" a toggle button, but that would require some more plumbing (not included in patch). A "run" indicator should be simple to implement. The status bar can contain a label that can be updated with calls to "beginexecuting" and "endexecuting" in PyShell.py. |
|||
| msg265100 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2016年05月07日 22:56 | |
'raise KeyboardInterrupt' in code causes shell to hang until Restart Shell Cntl-F6 in invoked. >>> [DEBUG ON] >>> raise KeyboardInterrupt <debug window activates. Hit [step]. Window deactivates. No prompt, even in response to Enter. Shell unresponsive.> <Restart Shell> =============================== RESTART: Shell =============================== [DEBUG ON] >>> The behavior was noted by pperry on #26949, which is about SystemExit behavior. I currently think it part of this issue. |
|||
| msg265103 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2016年05月07日 23:13 | |
More info: Even though the debug window looks inactive, it is not. After the restart, debugger cannot be turned off because it is 'active'. It must be stuck on the raise statement. The window can be closed, but after that, it cannot be brought back because something is still going. It takes another Restart to restart debugger. |
|||
| msg294330 - (view) | Author: Louie Lu (louielu) * | Date: 2017年05月24日 07:12 | |
The reproduce step can be reduce to: 1. open idlelib with debugger (./python -m idlelib -d) 2. enter print() (or any other function call) 3. Control-C breakout Then it will restart the shell. |
|||
| msg294338 - (view) | Author: Louie Lu (louielu) * | Date: 2017年05月24日 09:38 | |
Update roger's patch to current version. Is there any reason this patch isn't merged? The problem in #26949 is a separate issue about this problem. |
|||
| msg294447 - (view) | Author: Louie Lu (louielu) * | Date: 2017年05月25日 08:26 | |
Roger, will you convert the patch to GitHub PR? The patch runs will, there are only two point need to add:
1. user_interrupt should clear sys.settrace when step in
2. cancel_callback add a interp.write("\nKeyboardInterrupt\n")
Thanks.
|
|||
| msg294483 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2017年05月25日 14:42 | |
Roger, Python development has moved from hg and out private server to git and GitHub. Patches posted on the tracker must be converted to git pull requests (PRs) to be merged, and also for proper review and editing. Unless you prefer to do it yourself, we will. The only difference is the 'author' field of the PR. Credit in the commit message and news entry remains as it was. Louie, make a PR for this any time you want to. I do not expect a quick response either way. The original commit should be the patch as is other than necessary updates for 3.7, and identified as Roger's in the commit message. Then make your changes in separate commits. |
|||
| msg294530 - (view) | Author: Louie Lu (louielu) * | Date: 2017年05月26日 04:06 | |
The patch is upload to PR 1821, if Roger get a GitHub account and linked to b.p.o, we can rebase the first commit and change the author in commit message to Roger's account information. |
|||
| msg382320 - (view) | Author: Terry J. Reedy (terry.reedy) * (Python committer) | Date: 2020年12月02日 15:25 | |
Mark, since you are working on redoing the debugger gui, do you have any opinion on this? The basic idea is that ^C when debugging should just interrupt the remote process, not end it, just as when there is no debugger. I agree. I just updated the PR to current master but have not at the moment tested it. |
|||
| msg382537 - (view) | Author: Mark Roseman (markroseman) * | Date: 2020年12月04日 22:09 | |
Terry, I agree that Ctrl-C should act just as an interrupt when the debugger is active. I also agree that a way to interrupt the debugger through the user interface is needed (in the revised UI, there's an explicit 'stop' button for that). |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:27 | admin | set | github: 58319 |
| 2020年12月04日 22:09:27 | markroseman | set | messages: + msg382537 |
| 2020年12月02日 15:25:06 | terry.reedy | set | nosy:
- roger.serwy messages: + msg382320 versions: + Python 3.10, - Python 3.7 |
| 2017年05月26日 04:06:24 | louielu | set | messages: + msg294530 |
| 2017年05月26日 04:04:53 | louielu | set | pull_requests: + pull_request1907 |
| 2017年05月25日 14:42:05 | terry.reedy | set | assignee: terry.reedy messages: + msg294483 versions: + Python 3.7, - Python 2.7, Python 3.5, Python 3.6 |
| 2017年05月25日 08:26:03 | louielu | set | messages: + msg294447 |
| 2017年05月24日 09:38:24 | louielu | set | files:
+ 0001-WIP.patch messages: + msg294338 |
| 2017年05月24日 07:12:06 | louielu | set | nosy:
+ louielu messages: + msg294330 |
| 2016年05月07日 23:13:58 | terry.reedy | set | messages: + msg265103 |
| 2016年05月07日 22:56:25 | terry.reedy | set | type: enhancement -> behavior stage: patch review messages: + msg265100 versions: + Python 3.6, - Python 3.4 |
| 2015年09月18日 16:40:52 | markroseman | set | nosy:
+ markroseman |
| 2014年07月30日 21:51:19 | BreamoreBoy | set | versions: + Python 3.5, - Python 3.3 |
| 2013年06月15日 18:53:18 | terry.reedy | set | versions: + Python 3.3, Python 3.4 |
| 2012年02月27日 05:30:03 | roger.serwy | set | files:
+ Issue14111.patch nosy: + terry.reedy, roger.serwy messages: + msg154433 keywords: + patch |
| 2012年02月24日 19:47:19 | ltaylor934 | create | |