1、首先要打开root权限的终端。
Ubuntu 的 10.XX以上,已经可以找到root的终端,如果没有,可以使用普通的终端使用sudo命令前缀。
2、下载并安装tftp服务器。
一般网上的教程都要下三个文件,一个是tftp,一个是tftpd ,一个是openBSD-inetd。其实大部分的使用采用tftpd和openBSD-inetd就够了。不过为了统一和傻瓜性,还是用大家都喜欢用的命令。链接网线后,【6688电子商务网站 www.6688.cc 】在终端输入。
sudo apt-get install tftpd tftp openbsd-inetd
按照提示确认并完成
3、重新启动系统。
4、打开终端,编辑配置文件/etc/inetd.conf
建议采用命令sudo vi /etc/inetd.conf
在这个配置文件里面找到下面的位置:
#:BOOT: TFTP service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
#我把上面的默认的配置文件用井号注释掉了,自己配置了下面的一行
#tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftp
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftp
#楼上这一行前面没有井号,是生效的,支持中文注释,如果系统支持,也可以用sudo gedit /etc/inetd.conf来更改这个配置文件。
#上面每一个项之间有一个空格就好了,不过为了方便大家参考,我用了大量空格隔开,无论多少个空格都无所谓的。
#红色的/tftp是存在于根目录的文件夹,存在于根目录有一个好处,对于更改权限非常方便,更改其一个就好,如果放在/home/里面
#可能会存在由于Ubuntu的保护或之类的,导致文件夹权限修改不正确,导致无法正常下载。
#最后,保存配置文件并退出。
5、创建TFTP服务器的文件目录。
打开终端,进入根目录(用cd / )(或cd ..)退到顶。
输入命令:
sudu mkdir tftp
sudu chmod 777 /tftp
如果有需要下载的文件这时可以拷贝进去,也用chmod 777命令把所有权限打开。
6、通过下面命令启动(或重启)xinetd服务
sudo /etc/init.d/openbsd-inetd restart
7、查看69端口是否有打开,使用下面命令
netstat -an |more
打印出的东西中找到如下即可:
udp 0 0 0.0.0.0:69 0.0.0.0:*
8、最好统一一下操作 ,reboot一下系统。
9、系统重启后再使用 sudo /etc/init.d/openbsd-inetd restart 命令 重置一下状态。
10、查看tftp服务器是否已经启动 netstat -a | grep tftp
http://www.easyicon.cn/
使用XCode调试,笔记
转载自:http://my.oschina.net/rareliu/blog/17332
设置debugger的布局
可以通过Run > Debugger Display > Horizontal Layout设置成水平布局,这是xcode 的默认布局,也可以通过Run > Debugger Display > Vertical Layout来设置成垂直布局。区别在于,垂直时,位于原来中间的代码区移到右边。相对原来的,我更喜欢垂直布局~
水平布局
垂直布局
查看全局变量
Variable中现实了当前的变量的值,类型等等。其中有一个Global组显示了当前的全局变量。默认为空,我们可以通过Run > Show > Global Variables来选择要显示的全局变量。
设置断点断点非常有用。按照作用范围,xcode 包括2类断点。一种是Project Breakpoints,另一种是Global Breakpoints。如下图:(可以通过 Run > Show > Breakpoints 来显示)
两者的区别在于,Project Breakpoints只作用在当前的project中。而Global则是作用在当前用户的所有project中。
按照类型分,xcode 包括4种类型的断点:
- File Line :运行到文件的某一行触发
- Symbolic:按照特定的条件触发
- Objective-c exception: 抛出OBJC异常时触发
- C++ exception:抛出C++异常时触发
每一个断点前的小三角可以打开一个设置关联这个断点行为的窗口。比如说声音,applescrpit等等
每个断点前的图标如果是个文件()的话,表示这个断点是File Line或者C++ exception,如果是蓝盒子(),则是Objective-c exception或者是Symbolic
最右面的方形选择框有点特别,如果选择了这个框,那么xcode 会停在断点处,运行预先设置好的事件,然后自动继续运行程序。如果没有选,那么xcode 停在断点处后,先运行设置好的事件,然后等待用户决定是否继续运行。
Condition处可以设置这个断点的触发条件。比如说 i==24表示当i等于24时这个断点才会被触发。而Ignore Count处则是设置这个断点处被忽略多少次。比如说这里如果设置成5, 则表示第六次遇到这个断点时才触发。
如何设置断点设置一个File-Line断点。
这个比较简单,只需要在那一行前点一下,出现一个箭头。 如:
设置Symbolic断点:
有以下两种方法:
- 选择要设置的那一行,然后Run>Manage Breakpoints>Add Symbolic Breakpoint, 然后输入方法或者函数名
- 打开断点窗口,双击”Double-Click for Symbol”,然后输入触发时的函数路径。
比如说我们可以设置为 -[NSException raise], 这样当调试时遇到NSException的异常时自动中断。
给@Synthesize 设置断点:有时候可能需要知道什么时候,什么情况下读取或者修改了某个成员变量的值。因此我们需要给这个成员变量设置一个断点,当调试时,每次遇到读取或者修改这个成员变量,就触发这个断点。
设置的方法非常简单。只需要在那个变量的@synthesize那一行按照file-line的断点设置一样设置一个断点,当运行调试时,会自动弹出一个窗口,询问你要对setter还是getter还是这2者设置断点。如下图:
需要注意的是,如果修改了变量名,必须要重新设置一遍。
添加Objective-C Exception Breakpoints这个功能相当有用。设置起来出奇的简单。选中菜单Run>Activate/Deactivate下的Stop on Objective-C Exceptions. 如图:
使用预定义的breakpoints.XCode里已经预定义了很多的breakpoint模版。在想要设定的代码行前右键,Built-in Breakpoints,
预定义的breakpoint写的很清楚明白。
- Log breakpoint and arguments and auto-continue: 打印当前的函数的参数并自动继续执行。
- Log beakpoint and hit count and auto-continue: 打印出当前断点已执行过的次数并继续执行。
- Log stack trace and auto-continue: 打印当前的堆栈调用,并继续执行。
- Sound out and auto-continue: 响一声并接着执行。
- Print self and auto-continue: 打印当前函数所属的类,并继续执行。
- Speak breakpoint and hit count and auto-continue: 读出断点,次数并继续执行。