Sindbad~EG File Manager

Current Path : /usr/local/share/gdb/python/gdb/dap/__pycache__/
Upload File :
Current File : /usr/local/share/gdb/python/gdb/dap/__pycache__/startup.cpython-311.pyc

�

��g����ddlZddlZddlZddlZddlZddlmZmZddlZej	ddkrej	ddkrej
ZnejZej
��ZdaGd�de��Zdd	�Zdd�Zd�Zd
�Zd�ZGd�de��ZGd�dej��Ze��ZGd�dej��Ze��Zejfd�Zejfd�Zejfd�Z ed���Z!dS)�N)�IntEnum�auto���c��eZdZdS)�DAPExceptionN)�__name__�
__module__�__qualname__���./gdb/dap/startup.pyr	r	.s�������Drr	Fc��	tj||���S#t$r"}tt	|����|�d}~wwxYw)N)�global_context)�gdb�parse_and_eval�	Exceptionr	�str)�
expressionr�es   rrr4sT��*��!�*�^�L�L�L�L���*�*�*��3�q�6�6�"�"��)�����*���s��
A�?�Ar
c�j���fd�}tj|||d���}|���|S)z�Start a new thread, invoking TARGET with *ARGS there.
    This is a helper function that ensures that any GDB signals are
    correctly blocked.c����	�|�nK#t$r>}|�dt|����}td|z��t��Yd}~nd}~wwxYwtd��dS#td��wxYw)Nz, zcaught exception: �terminating)r�type�
thread_log�	log_stack)�args�err�
err_string�targets   �r�thread_wrapperz$start_thread.<locals>.thread_wrapperBs����	&��F�D�M�M�M���	�	�	�%(�S�S�$�s�)�)�)�4�J��+�j�8�9�9�9��K�K�K�K�K�K�K�K�����	����
�}�%�%�%�%�%��J�}�%�%�%�%���s+�	�A%�
A�4A�A%�A�A%�%A6T)�namer!r�daemon)r�Thread�start)r#r!rr"�results `   r�start_threadr(=sH���
&�&�&�&�&��Z�T�.�t�D�
Q�
Q�
Q�F�
�L�L�N�N�N��Mrc����td���fd�}td|����fd�}tjj�|��dS)z-Start the DAP thread and invoke TARGET there.zset breakpoint pending onc�B��tj��a���dS�N��	threading�current_thread�_dap_thread)r!s�r�really_start_dapz#start_dap.<locals>.really_start_dap[s ����.�0�0��������r�DAPc�l��td������td��dS)Nzjoining DAP thread ...zjoining DAP thread done)r�join)�event�
dap_threads �r�_on_gdb_exitingz"start_dap.<locals>._on_gdb_exitingcs7����+�,�,�,��������,�-�-�-�-�-rN)�exec_and_logr(r�events�gdb_exiting�connect)r!r0r6r5s`  @r�	start_dapr;Usx�����,�-�-�-�������e�%5�6�6�J�.�.�.�.�.�
�J��"�"�?�3�3�3�3�3rc�F��tj����fd���}|S)zAA decorator that asserts that FUNC must be run in the GDB thread.c�L��tj��tusJ��|i|��Sr+)r-r.�_gdb_thread�r�kwargs�funcs  �r�ensure_gdb_threadz(in_gdb_thread.<locals>.ensure_gdb_threadn�2����'�)�)�[�8�8�8�8��t�T�$�V�$�$�$r��	functools�wraps)rArBs` r�
in_gdb_threadrGk�;����_�T���%�%�%�%���%��rc�F��tj����fd���}|S)zAA decorator that asserts that FUNC must be run in the DAP thread.c�L��tj��tusJ��|i|��Sr+r,r?s  �r�ensure_dap_threadz(in_dap_thread.<locals>.ensure_dap_threadyrCrrD)rArKs` r�
in_dap_threadrLvrHrc�6�eZdZe��Ze��ZdS)�LogLevelN)r
rrr�DEFAULT�FULLr
rrrNrN�s$�������d�f�f�G��4�6�6�D�D�DrrNc�*��eZdZdZdZdZ�fd�Z�xZS)�
LogLevelParamzDAP logging level.zSet the DAP logging level.zShow the DAP logging level.c���t���dtjtj��t
j|_dS)Nzdebug dap-log-level)�super�__init__r�COMMAND_MAINTENANCE�PARAM_ZUINTEGERrNrO�value��self�	__class__s �rrUzLogLevelParam.__init__�s<���
�����!�3�#:�C�<O�	
�	
�	
��%��
�
�
r)r
rr�__doc__�set_doc�show_docrU�
__classcell__�r[s@rrRrR�sH���������*�G�,�H�&�&�&�&�&�&�&�&�&rrRc�R��eZdZdZdZdZej��ZdZ	�fd�Z
d�Z�xZS)�LoggingParamzWhether DAP logging is enabled.zSet the DAP logging status.zShow the DAP logging status.Nc���t���dtjtj��d|_dS)Nzdebug dap-log-file)rTrUrrV�PARAM_OPTIONAL_FILENAMErXrYs �rrUzLoggingParam.__init__�s9���
����� �#�"9�3�;V�	
�	
�	
���
�
�
rc���tj5|j� |j���d|_|j�t|jd��|_ddd��n#1swxYwYdS)N�w�)�dap_log�lock�log_file�closerX�open)rZs r�get_set_stringzLoggingParam.get_set_string�s���
�\�	6�	6��}�(��
�#�#�%�%�%� $��
��z�%� $�T�Z�� 5� 5��
�
	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6��rs�A	A"�"A&�)A&)
r
rrr\r]r^r-�LockrirjrUrmr_r`s@rrbrb�sk�������)�)�+�G�-�H��9�>���D��H������������rrbc��tj5tj�I|tjkr9t|tj���tj���ddd��dS#1swxYwYdS)z5Log SOMETHING to the log file, if logging is enabled.N��file)rhrirj�
_log_levelrX�print�flush)�	something�levels  r�logrw�s���	��%�%���'�E�Z�5E�,E�,E��)�'�"2�3�3�3�3���"�"�$�$�$�%�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�%�%s�AA0�0A4�7A4c��tj��turd}ntj��j}t	|dz|z|��dS)zULog SOMETHING to the log file, if logging is enabled, and prefix
    the thread name.zGDB mainz: N)r-r.r>r#rw)rurv�thread_names   rrr�sP����!�!�[�0�0� ����.�0�0�5����d��Y�&��.�.�.�.�.rc��tj5tj�M|tjkr=tjtj���tj���ddd��dS#1swxYwYdS)z9Log a stack trace to the log file, if logging is enabled.Nrp)rhrirjrrrX�	traceback�	print_excrt)rvs rrr�s���	��%�%���'�E�Z�5E�,E�,E���W�%5�6�6�6�6���"�"�$�$�$�%�%�%�%�%�%�%�%�%�%�%�%����%�%�%�%�%�%s�AA4�4A8�;A8c���td|z��	tj|dd���}|dkrtd|z��dSdS#tj$rt	��YdSwxYw)zWExecute the gdb command CMD.
    If logging is enabled, log the command and its output.z+++ T)�from_tty�	to_stringrgz>>> N)rwr�execute�errorr)�cmd�outputs  rr7r7�s�������������S�4�4�@�@�@���R�<�<����� � � � � ��<���9��������������s�/A�A(�'A()F)r
)"rE�queue�sysr-r{�enumrrr�version_info�Queue�DAPQueue�SimpleQueuer.r>r/rr	rr(r;rGrLrN�	ParameterrRrrrbrhrOrwrrr7r
rr�<module>r�sC��$��������
�
�
�
�����������������
�
�
�
���A��!���� 0�� 3�q� 8� 8��{�H�H�� �H�'�i�&�(�(����	�	�	�	�	�9�	�	�	�*�*�*�*�����04�4�4�,�����������w����

&�
&�
&�
&�
&�C�M�
&�
&�
&��]�_�_�
������3�=����4�,�.�.��"�)�%�%�%�%�!)� 0�/�/�/�/��$�%�%�%�%��	�	���	�	�	r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists