Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何判断OSX程序是否正在调试器中运行?_C++_C_Macos_Debugging - Fatal编程技术网

C++ 如何判断OSX程序是否正在调试器中运行?

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

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_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;
}