Trepan-Debuggers / Trepan-Debuggers/python3-trepan

Problems with conditional breakpoints defined with "break {...} if {condition}" command.

Open
#13 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
176
Forks
17
PR merge metrics
No merged PRs in 30d

Description

Hi,

I have been testing conditional breakpoints, but I have found some problems applying the condition directly when defining the breakpoints:

Python script used as example:

import sys
def main(arguments):
    for i in range(10):
        print(i)
        print("Test")

if __name__ == '__main__':
    main(sys.argv)

Defining condition in break-point creation:

trepan3k --highlight=plain --different test.py 
(/tmp/python_example/test.py:1): <module>
-> 1 import sys
(trepan3k) break 4 if i==5
Breakpoint 1 set at line 4 of file /tmp/python_example/test.py
(trepan3k) break 5 if i==3
Breakpoint 2 set at line 5 of file /tmp/python_example/test.py
(trepan3k) info break
Num Type          Disp Enb    Where
-----------------------------------
1   breakpoint    keep y   at /tmp/python_example/test.py:4
	stop only if if i==5
2   breakpoint    keep y   at /tmp/python_example/test.py:5
	stop only if if i==3
(trepan3k) continue
(/tmp/python_example/test.py:4 @19): main
xx 4         print(i)

When printing breakpoints information, I have seen that 'if' word appears two times in condition definition information (stop only if if ...).

Defining condition after break-point creation:

trepan3k --highlight=plain --different test.py 
(/tmp/python_example/test.py:1): <module>
-> 1 import sys
(trepan3k) break 4
Breakpoint 1 set at line 4 of file /tmp/python_example/test.py
(trepan3k) condition 1 i==5
(trepan3k) break 5
Breakpoint 2 set at line 5 of file /tmp/python_example/test.py
(trepan3k) condition 2 i==3
(trepan3k) info break
Num Type          Disp Enb    Where
-----------------------------------
1   breakpoint    keep y   at /tmp/python_example/test.py:4
	stop only if i==5
2   breakpoint    keep y   at /tmp/python_example/test.py:5
	stop only if i==3
(trepan3k) continue
0
Test
1
Test
2
Test
3
(/tmp/python_example/test.py:5 @29): main
xx 5         print("Test")
(trepan3k) eval i
3

I hope that this information can be helpful.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with the shown test.py script and the break 4 if i==5 command, then compare it with setting the condition afterward using condition. Trace the breakpoint command parsing and reporting path; done means inline conditions are displayed without a duplicated if and behave like conditions set afterward.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.