
    -Ph1                     |    d Z ddlZddlZddlZddlZddlZddlZddlZddlZ ej	        e
          Z	 	 ddZd ZdS )a  
The Cython debugger

The current directory should contain a directory named 'cython_debug', or a
path to the cython project directory should be given (the parent directory of
cython_debug).

Additional gdb args can be provided only if a path to the project directory is
given.
    N Fc                 J   |skt           j                            | dd          }t          j        |          }|s4t	          j        dt           j                            |           z             t          j                    \  }}t          j	        |d          }	 |
                    |           |
                    t          j        dt          t                    z   dz                        |rn|st           j                            | dd          }	t          |	          }
	 |
                                }|
                                 n# |
                                 w xY w|
                    d|z             |
                    d	                    d
 |D                                  |s-|
                    t          j        d|z   dz                        |
                    d           |                                 n# |                                 w xY w|S )Ncython_debugzcython_debug_info_*z1No cython debug files were found in %s. Aborting.wa              # This is a gdb command file
            # See https://sourceware.org/gdb/onlinedocs/gdb/Command-Files.html

            set breakpoint pending on
            set print pretty on

            python
            try:
                # Activate virtualenv, if we were launched from one
                import os
                virtualenv = os.getenv('VIRTUAL_ENV')
                if virtualenv:
                    path_to_activate_this_py = os.path.join(virtualenv, 'bin', 'activate_this.py')
                    print("gdb command file: Activating virtualenv: %s; path_to_activate_this_py: %s" % (
                        virtualenv, path_to_activate_this_py))
                    with open(path_to_activate_this_py) as f:
                        exec(f.read(), dict(__file__=path_to_activate_this_py))
                from Cython.Debugger import libcython, libpython
            except Exception as ex:
                from traceback import print_exc
                print("There was an error in Python code originating from the file z")
                print("It used the Python interpreter " + str(sys.executable))
                print_exc()
                exit(1)
            end
            interpreterzfile %s

c              3       K   | ]	}d |z  V  
dS )zcy import %s
N ).0fns     U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/Cython/Debugger/Cygdb.py	<genexpr>z$make_command_file.<locals>.<genexpr>V   s(      JJ.3JJJJJJ    a%                      python
                    import sys
                    # Check if the Python executable provides a symbol table.
                    if not hasattr(gdb.selected_inferior().progspace, "symbol_file"):
                        sys.stderr.write(
                            "z was not compiled with debug symbols (or it was "
                            "stripped). Some functionality may not work (properly).\n")
                    end
                zsource .cygdbinit
)ospathjoinglobsysexitabspathtempfilemkstempfdopenwritetextwrapdedentstr__file__openreadclose)path_to_debug_infoprefix_code	no_importskip_interpreterpatterndebug_filesfdtempfilenamefr   interpreter_filer   s               r   make_command_filer,      sC    I',,1-46 6 i(( 	IHH#%7??3E#F#FH I I I  '))B
	"cA>		 !W* Z]]eYfYf+!g*j+!   	 	 	8  	+ # 	3 w||$6VV#':: -"2"7"7"9"9K$**,,,,$**,,,,k1222GGDIIJJkJJJJJKKK# 
 )! $/)/2	) 	 	 	 	 	 GG)***									s&   B
H
 %E 9H
 E$$BH
 
H c                     t          j        dd          } |                     ddd           |                     dd	d
d           |                     dddd           |                     dddddd           |                     ddddd           |                                 }|j        }|j        }|d
u }|j        `|r^t          j                            |d                   r9dd
l	}|j        dd
         }|j        d         }|
                    d| d           t          j        }|j        dk    rt          j        }|j        d k    rt          j        }t          j        |!           |j        }t$                              d"|           t)          |||#          }t$                              d$|j        ||           t/          |          5 }	t$                              d%| |	j                               t$                              d&|j                   t3          j        |j        d'|g|z             }
t$                              d(|j        |
j                   	 	 t$                              d*|
j                   |
                                }t$                              d+|
j        |           n# t:          $ r Y nw xY wht$                              d, |	j                               d
d
d
           n# 1 swxY w Y   t$                              d-|           t          j        |           t$                              d.|           d
S )/z
    Start the Cython debugger. This tells gdb to import the Cython and Python
    extensions (libcython.py and libpython.py) and it enables gdb's pending
    breakpoints.
    cygdbzCython debugger)progdescriptiongdb_argv*z/Arguments to forward to gdb; specified after --)nargshelpz--build-dir	build_dirNz(Directory containing cython_build/ files)destdefaultr4   z--gdb-executablegdbz$gdb executable to use [default: gdb]z	--verbosez-v	verbositycountr   z8Verbose mode. Multiple -v options increase the verbosity)r6   actionr7   r4   z--skip-interpreterr%   F
store_truez]Do not automatically point GDB to the same interpreter used to generate debugging information)r6   r7   r;   r4      zPUsing deprecated positional parameter to find build directory. Use "--build-dir z" argument instead.   )levelzoptions = %r)r$   r%   z3Launching %s with command file: %s and gdb_argv: %sz%Command file (%s) contains: """
%s"""zSpawning %s...z-commandzSpawned %s (pid %d)Tz#Waiting for gdb (pid %d) to exit...z3Wait for gdb (pid %d) to exit is done. Returned: %rz%Closing temp command file with fd: %szRemoving temp command file: %szRemoved temp command file: %s) argparseArgumentParseradd_argument
parse_argsr5   r1   r   r   isdirwarningswarnloggingWARNr9   INFODEBUGbasicConfigr%   loggerdebugr,   infor8   r   r    
subprocessPopenpidwaitKeyboardInterruptfilenoremove)parseroptionsr"   r1   r$   rE   logging_levelr%   r)   r   prets               r   mainr[   k   s
    $%  F 
#N  P P P
KG  I I I
*E3  5 5 5 T!G  I I I ,-u\D  E E E
 !!G *H"d*I X "'--2L2L #ABB'$-a0  Qi{  Q  Q  Q  	R  	R  	RLMAAm,,,,/
LL)))$%7/86FH H HL KKE\8- - -	l		 Qx=|]X]__]]]$gk222gk:|DxOPP)7;>>>	BAEJJJffhhRTUTY[^___  %   	 	<oho>O>OPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q LL1<@@@Il
LL0,?????s8   BL(AJ>=L>
KL
K,LL
L)r   FF)__doc__r   r   r   r   r   rO   r@   rG   	getLogger__name__rL   r,   r[   r
   r   r   <module>r_      s   	 	 
			 



         		8	$	$ 798=N N N NbD@ D@ D@ D@ D@r   