2012年11月

1、当程序发生Segmentation fault错误时,会生成core文件,用dbx定位那行代码引起的
$ dbx pgm core
Type 'help' for help.
warning: The core file is not a fullcore. Some info may
not be available.
[using memory image in core]
reading symbolic information ...

Segmentation fault in main at line 122
122       printf("pint: %dn", *pint); //要在这里输出源码,cc编译时必须指定-g选项
2、当程序运行进入死循环不退出时,attach进程,定位程序正在执行的代码位置
例如pgm程序一直运行不结束
$ ps -ef|grep pgm
usr1 1347736 483328 115 11:28:58 pts/1 0:06 pgm
usr1 1507512 667666   0 11:29:06 pts/7 0:00 grep pgm
$ dbx -a 1347736
Waiting to attach to process 1347736 ...
Successfully attached to pgm.
Type 'help' for help.
reading symbolic information ...
stopped in unnamed block in main at line 26
   26   while (1){
(dbx) quit //pgm程序同时会结束运行,但可以先detach这个进程再退出。
4)查看运行中变量值,dump当前proc中的所有变量
(dbx) dump
main(), line 40 in "pgm.c"
pint = 0x2ff22ba0
pintvar = 5
pstring = ""
__func__ = "main"
(dbx)
如果需要查看某个内存地址值,命令:address/mode
例如pint指针地址(pint_addr: 804399856),二进制为:0x2ff22af0,
(dbx) 0x2ff22af0/D   //按十进制打印一个长字
0x2ff22af0: 5

$man ulimit

ulimit Command

Purpose

       Sets or reports user resource limits.

Syntax

       ulimit [ -H ] [ -S ] [ -a ] [ -c ] [ -d ] [ -f ] [ -m ] [ -n ] [ -r ] [ -s ] [ -t ] [-u ][ Limit ]

Description

       The ulimit command sets or reports user process resource limits, as defined in the /etc/security/limits file. This file
       contains these default limits:

       fsize = 2097151
       core = 2097151
       cpu = -1
       data = 262144
       rss = 65536
       stack = 65536
       nofiles = 2000
       threads = -1
       nproc = -1

       These values are used as default settings when a new user is added to the system. The values are set with the mkuser
       command when the user is added to the system, or changed with the chuser command.

       Limits are categorized as either soft or hard. With the ulimit command, you can change your soft limits, up to the maximum
       set by the hard limits. You must have root user authority to change resource hard limits.

test $ ulimit -c
0
test $ ulimit -c 1000
test $ ulimit -c
1000

#&g_test/16x 显示从 g_test 的地址开始处,连续 16 个 WORD(?byte)的取值

列举寄存器内容:

(dbx) registers

 

显示寄存器中变量值,例如显示$r0的值 

(dbx)p $r0

0x100001bc

今天回家网络出问题了,播不号了,pppoe一直连接着。感觉网线坏了或者对端交换机口DOWN了,于是叫小区宽带工作人员看看。他大爷的让我重起计算机,哥以前也是学网络的啊,重启管毛,忽悠哥阿。于是把他给弄到家来了,让他看看。他连接也不行,最后修改了一下网卡属性,为10M半双工,我晕好了,好尴尬阿。他走了,百度之,原来是线有问题了,安'普的破线,假的吧。应该是8根线坏了几根,搞的全双工不行了,只能半双工了。速度肯定不行阿,这个问题感觉应该也是自动协商的BUG把,没有初始化一下吗。废话不多说,看下面的吧。



全双工与半双工的区别 网线水晶头 排线顺序

全双工传输

英文写法是:Full-Duplex Transmissions

是指交换机在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的交换机都支持全双工。

全双工的好处在于迟延小,速度快。

与之对应的是【半双工】这个概念:就是指一个时间段内只有一个动作发生,举个简单例子,一天窄窄的马路,同时只能有一辆车通过,当目前有两量车对开,这种情况下就只能一辆先过,等到头儿后另一辆再开,这个例子就形象的说明了半双工的原理。早期的对讲机、以及早期集线器等设备都是实行半双工的产品。随着技术的不断进步,半双工会逐渐退出历史舞台。

全双工与半双工

   在串行通信中,数据通常是在两个站(如终端和微机)之间进行传送,按照数据流的方向可分成三种基本的传送方式:全双工、半双工、和单工.但单工目前已很少采用,下面仅介绍前两种方式. 

1 、全双工方式( full duplex )
   当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制.在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送.全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利.这种方式要求通讯双方均有发送器和接收器,同时,需要 2 根数据线传送数据信号.(可能还需要控制线和状态线,以及地线). 

   比如,计算机主机用串行接口连接显示终端,而显示终端带有键盘.这样,一方面键盘上输入的字符送到主机内存;另一方面,主机内存的信息可以送到屏幕显示.通常,往键盘上打入 1 个字符以后,先不显示,计算机主机收到字符后,立即回送到终端,然后终端再把这个字符显示出来.这样,前一个字符的回送过程和后一个字符的输入过程是同时进行的,即工作于全双工方式. 

2 、半双式方式( half duplex ) 
   若使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工制.采用半双工方式时,通信系统每一端的发送器和接收器,通过收 / 发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟.收 / 发开关实际上是由软件控制的电子开关. 
当计算机主机用串行接口连接显示终端时,在半双工方式中,输入过程和输出过程使用同一通路.有些计算机和显示终端之间采用半双工方式工作,这时,从键盘打入的字符在发送到主机的同时就被送到终端上显示出来,而不是用回送的办法,所以避免了接收过程和发送过程同时进行的情况. 

   目前多数终端和串行接口都为半双工方式提供了换向能力,也为全双工方式提供了两条独立的引脚.在实际使用时,一般并不需要通信双方同时既发送又接收,像打印机这类的单向传送设备,半双工甚至单工就能胜任,也无需倒向.

全双工模式和半双工模式在网卡中的区别 

     在全双工模式下,8根线都要分别接到水晶头相应的线序位置上;

     在半双工模式下,只需接4根线,参照T568B标准,一般使用1 、2、3、6 线序位置上的四根线,即:白橙、橙、白绿、绿 四根线;
     白橙、橙 用于发送数据 ,白绿、绿 用于接收数据。    

     全双工模式下,网线最大可以达到100兆以上的速度;
     在半双工模式下,网线能达到的速度通常为10兆左右。

     全双工模式的网线既可以工作于全双工模式,也可以工作于半双工模式;
     但半双工模式的网线不能工作于全双工模式。

     在半双工模式下,多出来的两组线可以用来接电话线,比如:把“白蓝、蓝” 这组线分出来当电话线使用。
     在局域网网络布线中,用这种方式可以节省布线成本,一根双绞线同时当网线和电话线使用。

巧用网卡的半双工模式解决网络连接故障

     如果一根全双工模式的网线内部有一根或几根线短路或接触不良,比如蓝色线组或棕色线组有问题,那么,把网卡改为半双工模式,就可以避免使用有问题的蓝色线组或棕色线组,从而解决网络连接不稳定、掉线等故障。

     在网卡属性中可以设置全双工或半双工模式。


     如上图所示,用鼠标右键单击“本地连接”,在弹出菜单中点击“属性”,进入“本地连接 属性”界面;
点击(网卡)“配置”按钮,点“高级”标签,选中“Speed & Duplex”;
     可用的模式一般有“Auto” 、“10 Mb Half” 、“10 Mb Full” 、“100 Mb Half ”、“100 Mb Full”等。
     默认设置为auto 。

     如果网络连接有问题,比如:
     不能自动获得IP地址;
     显示网络连接受限制;
     手动设置IP地址后,虽然显示网络连接正常,但是只有发送的数据包,没有收到的数据包,或者收到的数据包非常少。
     那么,修改“Speed & Duplex”的“值”为 “10 Mb Half” ,也可以改为“10 Mb Full” 、“100 Mb Half ”模式试试;
     用这种方法可以解决大部分网络连接故障。
     如果这种方法没能解决问题,就只有更换网线或水晶头,甚至更换网卡了!

     由于半双工模式下,对网速有一定影响,因此,如果网线、网卡或交换机等设备没有问题,尽量让网