XCode присоединить процесс / отсоединить процесс (программно отсоединить отладчик)

Я отлаживаю плагин, используя XCode 4.5, используя Info> Launch> Wait for ??? чтобы запустить и отладить работу отлично.

Однако каждый раз, когда я нажимаю кнопку «Стоп» или нажимаю кнопку воспроизведения, приложение, к которому я прикрепляю свой плагин, будет убито (Killed: 9). Если я присоединяюсь к процессу, разве не логично, что кнопка воспроизведения или остановки отсоединит меня от этого процесса?

Есть ли способ, которым я могу изменить это поведение в XCode вместо того, чтобы вводить каждый раз на консоли lldb >> процесс detach для его продолжения?

Что я думаю, чтобы добавить некоторый код в мое основное приложение (то, к которому я присоединяю XCode), чтобы добавить кусок кода для отключения отладчика, это возможно?

[ РЕДАКТИРОВАТЬ ]

Нашел этот код, который определяет, подключен ли отладчик:

bool debugger_attached( void )
{
int mib[ 4 ];
struct kinfo_proc info;
size_t size;

info.kp_proc.p_flag = 0;

mib[0] = CTL_KERN;
mib[1] = KERN_PROC;
mib[2] = KERN_PROC_PID;
mib[3] = getpid();

size = sizeof( info );

sysctl( mib, sizeof( mib ) / sizeof( *mib ), &info, &size, NULL, 0 );

return ( ( info.kp_proc.p_flag & P_TRACED ) != 0 );
}

Теперь, как отсоединить отладчик от текущего процесса?

2

Решение

Я думаю, что из последующих комментариев уже ясно, что это поведение — у XCode нет простого жеста графического интерфейса для отсоединения от процесса — именно так все и происходит сегодня. Есть по крайней мере один случай использования, где это правильное поведение — при отладке процесса iOS Simulator на вашем Mac приложение Simulator не запускается непосредственно Xcode / lldb — оно подключается к уже запущенному процессу. В этом случае, когда вы нажимаете кнопку «Стоп» в XCode, вы ожидаете, что смоделированное приложение прекратит работу. Это деталь реализации, о которой пользователи не знают / не должны знать, но есть некоторая логика в поведении.

Для чего это стоит, вы можете сделать псевдоним в вашем ~/.lldbinit файл как

command alias det process detach

и теперь в консоли отладчика вы можете просто набрать det отделить. (или любой другой псевдоним, который вы хотите настроить). Это не так просто, как нажать кнопку в графическом интерфейсе, но это лучше, чем process detach,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]