Format: application/x-python-code
⬇ Download File (5.0 KB)
   1  o
   2  
   3  ��h�"�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
   4  mZmZddl
   5  mZejdkr?ddl
   6  mZda	da	gZ	dd�Zd	d
   7  �Zdd�Zd
   8  d�Zdd�ZdS)�N)�launcher)�log�	messaging)�output�win32)�winapicCsdtj�d�S)Nz
   9  Debuggee[PID=�])�process�pid�rr�Oc:\Users\shubh\Videos\agent\nova\Lib\site-packages\debugpy/launcher/debuggee.py�describe$sr
  10  cCs�t�d||�t�}�z2|r)t��\}}t��\}}|||||hO}t||d�}	ni}	tjdkr@tjj	dkr@dd�}
  11  |	j
  12  |
  13  d�ztj|f|dd	�|	��a
  14  Wntyc}z	t�d
  15  �||���d}~wwt�dt��tjdkr�zStj�dd�at��}t�t�|��}
  16  tj�ttjt�|�|
  17  t�|
  18  ��|jjtj tj!BO_tj�"ttjt�|�|
  19  �tj�#tj$tj%Bdt
  20  j&�}tj�'t|�Wnty�tj(d
  21  dd�Ynwt)�*t+�t,j-�.dddt
  22  j&|t/�0d�dd��|�rd|tj1fd|tj2ffD]\}}}t3�4t�|||�|�5|�q�t6j7t8dd�}d|_9|�:�W|D]}zt�;|�W�q t�y;tj(dd�Y�q wdS|D]}zt�;|�W�q@t�y[tj(dd�Y�q@ww)NzOSpawning debuggee process:
  23  
  24  Command line: {0!r}
  25  
  26  Environment variables: {1!r}
  27  
  28  )�stdout�stderrrZgraalpyc
  29  Ss�z=t��t�tjtj�}z(t�dtj�}zt�|t���Wt�	|�nt�	|�wWt�tj|�WdSt�tj|�wt
  30  yNtjddd�YdSw)Nz/dev/ttyzFailed to set up process group�info��level)
  31  �osZsetpgrp�signalZSIGTTOU�SIG_IGN�open�O_RDWRZ	tcsetpgrpZgetpgrp�close�	Exceptionr�swallow_exception)Zold_handler�ttyrrr�
  32  preexec_fn@s$��zspawn.<locals>.preexec_fn)rr)�env�bufsizez0Couldn't spawn debuggee: {0}
  33  
  34  Command line:{1!r}zSpawned {0}.FzFailed to set up job object�warningrr	ZlaunchT�P�)ZstartMethodZisLocalProcessZsystemProcessId�nameZpointerSizerrzwait_for_exit())�targetr")<rr�setr�pipe�dict�sys�platform�implementationr"�update�
  35  subprocess�Popenr	rrZMessageHandlingError�formatr
  36  r�kernel32ZCreateJobObjectA�
  37  job_handleZ$JOBOBJECT_EXTENDED_LIMIT_INFORMATION�DWORD�ctypes�sizeofZQueryInformationJobObjectZ!JobObjectExtendedLimitInformation�pointerZBasicLimitInformationZ
  38  LimitFlagsZ"JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSEZJOB_OBJECT_LIMIT_BREAKAWAY_OKZSetInformationJobObject�OpenProcessZPROCESS_TERMINATEZPROCESS_SET_QUOTAr
  39  ZAssignProcessToJobObjectr�atexit�register�killr�channel�
  40  send_event�struct�calcsizerrrZ
  41  CaptureOutput�remove�	threading�Thread�
  42  wait_for_exit�daemon�startr)Zprocess_nameZcmdlinerZredirect_output�	close_fdsZstdout_rZstdout_wZstderr_rZstderr_w�kwargsr�excZjob_infoZ
  43  job_info_sizeZprocess_handle�category�fd�teeZwait_threadrrr�spawn(s������
  44  ����
  45  ��
  46  ��
  47  
  48  �
  49  ����rHcCs�tdurdSz*t��dur.t�dt��tjdkr#tj�	t
  50  d�WdSt�tj
  51  tj�WdSWdStyAt�dt��YdSw)NzKilling {0}rrzFailed to kill {0})r	�pollrrr
  52  r'r(rr.ZTerminateJobObjectr/rZkillpgr
  53  rZSIGKILLrrrrrrr7�s
  54  �	�r7cs�zt���tjdkr�dkr�dM�Wnty#t�d�d�Ynwt�dt���t	�
  55  �t�fdd�tD��}zt
  56  j�d	d
  57  �i�Wn	tyOYnw|rUt�z	t
  58  j�d�WdStyhYdSw)Nrr��z$Couldn't determine process exit code�����z{0} exited with code {1}c3s�|]}|��VqdS)Nr)�.0�pred��coderr�	<genexpr>�s�z wait_for_exit.<locals>.<genexpr>ZexitedZexitCodeZ
  59  terminated)r	�waitr'r(rrrrr
  60  rZwait_for_remaining_output�any�wait_on_exit_predicatesrr8r9�_wait_for_user_input)Zshould_waitrrNrr?�s0�
  61  ���r?cCs�tjrUtjrWtj��rYddlm}zddl}Wnty"d}Ynwd}|r=|�d�tj�	d�tj�
  62  �|��dS|�d�tj�	d�tj�
  63  �tj�d	�dSdSdSdS)
  64  Nr)rFTz5msvcrt available - waiting for user input via getch()z Press any key to continue . . . z8msvcrt not available - waiting for user input via read()zPress Enter to continue . . . �)
  65  r'r�stdin�isatty�debugpy.commonr�msvcrt�ImportError�debug�write�flush�getch�read)rrYZ	can_getchrrrrT�s$�
  66  
  67  
  68  
  69  �rT)r5r1rrr:r+r'r=ZdebugpyrrXrrZdebugpy.launcherrr(rr	r/rSr
  70  rHr7r?rTrrrr�<module>s2
  71  "