Current File : //usr/share/gdb/python/gdb/dap/__pycache__/breakpoint.cpython-39.pyc
a

ɱZh:4�@s�ddlZddlZddlZddlmZddlmZmZddlm	Z	m
Z
mZddlm
Z
ddlmZmZddlmZed	d
��Zdaedd
��Zedd��Zedd��Zejj�e�ejj�e�ejj�e�iaedd��Zdd�Zedd��Z Gdd�dej!�Z"edd�dd��Z#edd��Z$edddd�e%ee&ee&ee&d �d!d"��Z'e	d#�e
d$�e
d%�e
d&�d'd(�ed(�d)d*�����Z(eddd+�e&ee&ee&d,�d-d.��Z)e	d/�e
d0�ed(�d1d2���Z*edddd3�e&ee%ee&ee&d4�d5d6��Z+e	d7�e
d8�dd9�eee%d:�d;d<���Z,ed=d>��Z-ed?d@��Z.eddA�e&ee&dB�dCdD��Z/e	dE�e
dF�e
dGdHdIdJdK�dLdMdJdK�dNdOdJdK�dPdQdJdK�dRdSdJdK�f�d'dT�ee&edU�dVdW����Z0dS)X�N)�contextmanager)�Optional�Sequence�)�request�
capability�
send_event)�make_source)�
in_gdb_thread�	log_stack)�
type_checkcCstddt|�d��dS)N�
breakpointZchanged��reasonr
�r�_breakpoint_descriptor�Zevent�r�+/usr/share/gdb/python/gdb/dap/breakpoint.py�_bp_modifieds��rFccsdazdVWdanda0dS)zCReturn a new context manager that suppresses new breakpoint events.TNF)�_suppress_bprrrr�suppress_new_breakpoint_event.srcCststddt|�d��dS)Nr
�newr)rrrrrrr�_bp_created9s��rcCstddt|�d��dS)Nr
Zremovedrrrrrr�_bp_deletedFs��rcCsr|jdd�}|jrn|jd}|jrZ|j\}}|jdur<|j}|�t|tj�|��|d��|j	rnt
|j	�|d<|S)z?Return the Breakpoint object descriptor given a gdb Breakpoint.T)�id�verifiedrN)�source�line�instructionReference)�numberZ	locationsr�fullname�updater	�os�path�basename�address�hex)�bp�result�loc�filenamerrrrr^s"�


��rcs�fdd�|D�S)Ncsg|]}��|d��qS�N)�pop)�.0�name��tablerr�
<listcomp>��z#_remove_entries.<locals>.<listcomp>r)r1�namesrr0r�_remove_entries�sr5cCsN|tvrt|}ni}it|<g}|D�]}t|dd�\}}t|���}d}	z�||vrb|�|�}	n4t��|fi|��}	Wd�n1s�0Y||	_|dur�d|	_ntt	j
|dd��|	_|	t||<|�t|	��Wq&t
�y.}
z8t�|	du�r|	��|�dt|
�d��WYd}
~
q&d}
~
00q&|��D]}|���q:|S)N�	condition�hitConditionrT)Zglobal_contextF)r�message)�breakpoint_mapr5�	frozenset�itemsr-rr6Zignore_count�int�gdb�parse_and_eval�appendr�	Exceptionr�delete�str�values)�kind�specsZcreatorZ	saved_mapr)�specr6Z
hit_conditionZkeyspecr(�e�entryrrr�_set_breakpoints_callback�sD

,�
��rIcs$eZdZ�fdd�Zdd�Z�ZS)�_PrintBreakpointcs$t�jfi|��t�d|�|_dS)Nz{(.*?)})�super�__init__�re�splitr8)�self�
logMessage�args��	__class__rrrL�sz_PrintBreakpoint.__init__cCs�d}t|j�D]r\}}|ddkr,||7}qzt�|�}|t|�7}Wqty~}z |dt|�d7}WYd}~qd}~00qtdd|d��d	S)
N��r�<�>�outputZconsole)�categoryrXF)�	enumerater8r=r>rBr@r)rOrX�idx�item�valrGrrr�stop�s 

,��z_PrintBreakpoint.stop)�__name__�
__module__�__qualname__rLr^�
__classcell__rrrRrrJ�srJ)rPcKs,|durt|fi|��Stjfi|��SdSr,)rJr=�
Breakpoint)rPrQrrr�_set_one_breakpoint�srdcCst||t�Sr,)rIrd)rDrErrr�_set_breakpoints�sre)r6r7rP)rr6r7rPcKs|d||||d�S)Nr$)rrr6r7rPr)rrr6r7rPrQrrr�_rewrite_src_breakpoint�s�rfZsetBreakpointsZ!supportsHitConditionalBreakpointsZsupportsConditionalBreakpointsZsupportsLogPointsr)�breakpointscKsVd|vrg}n@g}|D] }||d<|�tfi|���qd|d}t||�}d|iS)Nr$rzsource:rg)r?rfre)rrgrQr)rEr(�keyrrr�set_breakpoints
�ri)r6r7)r/r6r7cKs|||d�S)N)�functionr6r7r)r/r6r7rQrrr�_rewrite_fn_breakpoint+s	�rkZsetFunctionBreakpointsZsupportsFunctionBreakpointscKsdd�|D�}dtd|�iS)NcSsg|]}tfi|���qSr)rk�r.r(rrrr2=r3z%set_fn_breakpoint.<locals>.<listcomp>rgrj�re)rgrQrErrr�set_fn_breakpoint:s
�rn)�offsetr6r7)rror6r7cKs,d|}|dur |dt|�}|||d�S)N�*z + )rFr6r7)rB)rror6r7rQr]rrr�_rewrite_insn_breakpointFs�rqZsetInstructionBreakpointsZsupportsInstructionBreakpoints)ro)rgrocKsdd�|D�}dtd|�iS)NcSsg|]}tfi|���qSr)rqrlrrrr2`r3z(set_insn_breakpoints.<locals>.<listcomp>rgZinstructionrm)rgrorQrErrr�set_insn_breakpoints[s
�rrcKs\|dvrd|}ntdt|���t�|�}t��D]}|j|dkr4|Sq4td��dS)N)�assert�	exception�throw�rethrow�catchz-catch-zInvalid exception filterID: Zbkptnoz(Could not find catchpoint after creating)r@rBr=Z
execute_mirgr )�filterIdrQ�cmdr)r(rrr�_catch_exceptionfs


rzcCstd|t�S)Nrt)rIrz)Zfilter_optionsrrr�_set_exception_catchpointstsr{)r6�rxr6cKs
||d�S)Nr|r)rxr6rQrrr�_rewrite_exception_breakpoint|s	�r}ZsetExceptionBreakpointsZsupportsExceptionFilterOptionsZexceptionBreakpointFiltersrszAda assertionsT)�filterZlabelZsupportsConditionrtzAda exceptionsruzC++ exceptions, when thrownrvzC++ exceptions, when re-thrownrwzC++ exceptions, when caught)�
filterOptions)�filtersrcKs2dd�|D�}|�|�dd�|D�}dt|�iS)NcSsg|]}d|i�qS)rxr)r.r~rrrr2�r3z-set_exception_breakpoints.<locals>.<listcomp>cSsg|]}tfi|���qSr)r}rlrrrr2�r3rg)�extendr{)r�rrQ�optionsrrr�set_exception_breakpoints�s
$
�r�)1r=r#rM�
contextlibr�typingrrZserverrrrZsourcesr	Zstartupr
rZ	typecheckrrrrrrZeventsZbreakpoint_createdZconnectZbreakpoint_modifiedZbreakpoint_deletedr9rr5rIrcrJrdrer<rBrfrirkrnrqrrrzr{r}r�rrrr�<module>s�






$
;#	
����
����	


��
���������