Coverage for src/robotide/application/debugconsole.py: 31%

14 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-05-06 10:40 +0100

1# Copyright 2008-2015 Nokia Networks 

2# Copyright 2016- Robot Framework Foundation 

3# 

4# Licensed under the Apache License, Version 2.0 (the "License"); 

5# you may not use this file except in compliance with the License. 

6# You may obtain a copy of the License at 

7# 

8# http://www.apache.org/licenses/LICENSE-2.0 

9# 

10# Unless required by applicable law or agreed to in writing, software 

11# distributed under the License is distributed on an "AS IS" BASIS, 

12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

13# See the License for the specific language governing permissions and 

14# limitations under the License. 

15 

16import sys 1ab

17import threading 1ab

18import traceback 1ab

19 

20 

21def _print_stacks(): 1ab

22 id2name = dict((th.ident, th.name) for th in threading.enumerate()) 

23 for thread_id, stack in sys._current_frames().items(): 

24 print(id2name[thread_id]) 

25 traceback.print_stack(f=stack) 

26 

27 

28def start(ride): 1ab

29 import code 

30 help_string = """\ 

31RIDE - access to the running application 

32print_stacks() - print current stack traces 

33""" 

34 console = code.InteractiveConsole( 

35 locals={'RIDE': ride, 'print_stacks': _print_stacks}) 

36 thread = threading.Thread(target=lambda: console.interact(help_string)) 

37 thread.start()