iOS官网问答:Detecting the Debugger(判断是否处于联机调试)

翻译 2013年12月04日 15:05:24


这是来自苹果文档的Technical Q&A QA1361 Detecting the Debugger

Q: 我如何判断程序当前是处在联机调试?

A:最好使用以下代码来判断


#include <assert.h>
#include <stdbool.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/sysctl.h>

static bool AmIBeingDebugged(void)
// Returns true if the current process is being debugged (either
// running under the debugger or has a debugger attached post facto).
{
    int                 junk;
    int                 mib[4];
    struct kinfo_proc   info;
    size_t              size;
    
    // Initialize the flags so that, if sysctl fails for some bizarre
    // reason, we get a predictable result.
    
    info.kp_proc.p_flag =0;
    
    // Initialize mib, which tells sysctl the info we want, in this case
    // we're looking for information about a specific process ID.
    
    mib[0] = CTL_KERN;
    mib[1] = KERN_PROC;
    mib[2] = KERN_PROC_PID;
    mib[3] = getpid();
    
    // Call sysctl.
    
    size = sizeof(info);
    junk = sysctl(mib, sizeof(mib) /sizeof(*mib), &info, &size, NULL,0);
    assert(junk == 0);
    
    // We're being debugged if the P_TRACED flag is set.
    
    return ( (info.kp_proc.p_flag &P_TRACED) != 0 );
}
PS:因为kinfo_proc结构体的定义<定义在sys/sysctl.h中>在__APPLE_API_UNSTABLE中是有条件的,所以尽量少用上述代码调试debug版

虚拟机能否上网的判断方法

由于在做buildroot-2015.05版本的交叉编译器时,虚拟机不能上网,导致我无法下载其相应源码包,以及配置好交叉编译器后,一直编译出错,折腾了我好久,写个博客总结一下。 检测虚拟机能否...
  • zouleideboke
  • zouleideboke
  • 2016年10月19日 20:47
  • 1368

C语言实现ping功能(查看设备联网状态)

gethostbyname()函数说明——用域名或主机名获取IP地址     包含头文件     #include     #include     函数原型     struct hoste...
  • u013485792
  • u013485792
  • 2016年05月18日 17:00
  • 1638

Android中判断app是否连接网络

1.在MyApplication extends Application中添加如下代码: //判断网络状态 public boolean isConnectInternet() { ...
  • fuzhongbin
  • fuzhongbin
  • 2015年11月13日 11:27
  • 1459

ios联机调试和发布

  • 2013年01月09日 15:04
  • 16KB
  • 下载

如何联机调试和发布iOS应用程序($99个人版)

同时可以参考 “如何使用iOS开发者授权以及如何申请证书”:http://www.adobe.com/cn/devnet/flash/articles/ios_tutorial_3_pro_cert....
  • hustbin
  • hustbin
  • 2012年06月03日 15:46
  • 366

IOS开发 如何联机调试和发布程序(99$)

必须条件: 99$ (没这个就不用再往下看了) 我的系统是10.5.7   不同版本的系统,可能有点小小的区别 首先登录到 http://developer.apple.com/iphone...
  • sbvfhp
  • sbvfhp
  • 2012年03月26日 18:34
  • 636

使用XCode联机调试你的iOS应用

说起来,iDP(iOS Developer Program)的申请并不难,填写所有信息,然后发一封邮件就可以了。而在iDP申请完成之后,很多开发者要做的第一件事就是在设备上测试应用,因为很多特性是模拟...
  • hliq5399
  • hliq5399
  • 2014年02月12日 01:17
  • 2409

ios如何联机调试与发布程序

在网站:http://www.cocoachina.com/bbs/read.php?tid-7923.html上看到的,先保留一份,总有用得着的时候。 首先登录到 http://develope...
  • lifang303166
  • lifang303166
  • 2014年03月26日 18:02
  • 593

php抓取网站内容,获取通达OA官网最新用户,判断页面是否能访问,php正则

名单显示 li{ font-size:13px; } li.red{ color:#F00;} #mingdan{ margin-left:5px; }
  • hai7425
  • hai7425
  • 2016年07月20日 10:23
  • 1039

#646 – 在按键按下事件处理程序中判断按键开关状态(Detecting a Key’s Toggle State in a Keypress Handler)

在键盘上,有些键是可以切换状态的开关键,一些常用的开关键为:Caps Lock(大小写开关键), Scroll Lock(滚动锁定键) 和Num Lock(数字键盘开关键)。注意,通常情况下Shift...
  • Libby1984
  • Libby1984
  • 2017年02月06日 16:06
  • 298
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS官网问答:Detecting the Debugger(判断是否处于联机调试)
举报原因:
原因补充:

(最多只允许输入30个字)