C++ 如何判断OSX程序是否正在调试器中运行?
lldb或gdb是否设置了任何环境变量或有任何其他指示?抄袭自:C++ 如何判断OSX程序是否正在调试器中运行?,c++,c,macos,debugging,C++,C,Macos,Debugging,lldb或gdb是否设置了任何环境变量或有任何其他指示?抄袭自: #包括 布尔·伊辛德布格(){ 布尔结果=假; pid_t pid=getpid(); int mib[4]={CTL_KERN,KERN_PROC,KERN_PROC_PID,PID}; int mibSize=sizeof(mib)/sizeof(int); 实际尺寸; if(sysctl(mib,mibSize,NULL,&actualSize,NULL,0)==0){ 结构kinfo_proc*信息=(结构kinfo_pr
#包括
布尔·伊辛德布格(){
布尔结果=假;
pid_t pid=getpid();
int mib[4]={CTL_KERN,KERN_PROC,KERN_PROC_PID,PID};
int mibSize=sizeof(mib)/sizeof(int);
实际尺寸;
if(sysctl(mib,mibSize,NULL,&actualSize,NULL,0)==0){
结构kinfo_proc*信息=(结构kinfo_proc*)malloc(实际化);
如果(信息){
//这来自于对达尔文xnu内核的研究
if(sysctl(mib,mibSize,info,&actualSize,NULL,0)==0)
结果=(信息->kp\U过程p\U标志和p\U跟踪)?真:假;
免费(信息);
}
}
返回结果;
}
#include <sys/syscntl.h>
bool isInDebugger() {
bool result=false;
pid_t pid = getpid();
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid};
int mibSize = sizeof(mib) / sizeof(int);
size_t actualSize;
if (sysctl(mib, mibSize, NULL, &actualSize, NULL, 0) == 0) {
struct kinfo_proc *info = (struct kinfo_proc *)malloc(actualSize);
if (info) {
// This comes from looking at the Darwin xnu Kernel
if (sysctl(mib, mibSize, info, &actualSize, NULL, 0) == 0)
result = (info->kp_proc.p_flag & P_TRACED) ? true : false;
free(info);
}
}
return result;
}