gdb tui

gdb 的tui模式看起来会舒服一些,不过,有时候可能会由于终端处理不好而花掉,此时可以ctrl-z 推到后台在回来,重绘就好了

进入tui模式的两种方式:

  1. 启动时使用-tui选项
  2. 启动后使用ctrl – x a

 

关于窗口:

一共有4中展示方式:

  1. src: 显示源码窗口和命令窗口(如果是用纯汇编写的二进制程序,则源码窗口不会有东西的)
  2. asm: 显示汇编窗口和命令窗口
  3. split: 显示源码窗口、汇编窗口、命令窗口
  4. regs: 如果当前是源码窗口/汇编窗口和命令,则同时显示寄存器窗口,如果当前是split的,则。。。

ctrl+alt+j 可以快速切换窗口,所以有时候不必太过于纠结使用哪种layout

 

参考资料:

  1. http://mingxinglai.com/cn/2013/07/gdbtui/
  2. 图形界面的gdb: https://blog.csdn.net/shenyuflying/article/details/53931865

关于traceroute偶发超时的问题

刚配好的网络,traceroute测试一下:

-n 是不需要ip反解析,执行会比较快;于是就遇到了今天的问题:快速执行几次该命令就会出现失败(*)的情况,如果执行的慢点儿倒是没有问题

分析:

  1. 可能是网络不稳定
    1. ping 测试,大量请求,无一丢包 (显然不是网络问题)
  2. 限速?
    1. traceroute 涉及的是udp和icmp,不放sysctl -a|grep rate 试试

原因如下:

该问题和内核的两个参数有关:icmp_ratelimit、icmp_ratemask

虽然 ping 也是icmp,但是这种类型的icmp默认没有速率限制,而端口不可达的icmp是有限制的,所以,ping没有问题,traceroute有问题

参考:

icmp_ratelimit : INTEGER
默认值是100 Jiffie
限制发向特定目标的匹配icmp_ratemask的ICMP数据报的最大速率。0表示没有任何限制,否则表示jiffies数据单位中允许发送的个数。(如果在icmp_ratemask进行相应的设置Echo Request的标志位掩码设置为1,那么就可以很容易地做到ping回应的速度限制了)

icmp_ratemask : INTEGER
在这里匹配的ICMP被icmp_ratelimit参数限制速率.
匹配的标志位: IHGFEDCBA9876543210
默认的掩码值: 0000001100000011000 (6168 十进制)
关于标志位的设置,可参考 源程序目录/include/linux/icmp.h

0 Echo Reply
3 Destination Unreachable *
4 Source Quench *
5 Redirect
8 Echo Request
B Time Exceeded *
C Parameter Problem *
D Timestamp Request
E Timestamp Reply
F Info Request
G Info Reply
H Address Mask Request
I Address Mask Reply

* 号的被默认限速(见上表mask)

匹配的标志位: IHGFEDCBA9876543210
默认的掩码值: 0000001100 0 0 0 0 1 1001  (6169 十进制)

0 Echo Reply  掩码匹配

关于cmdline

/proc/$pid/cmdline 记录的是进程的显示名,默认是命令行中的信息,但是也可以修改,比如,php中使用cli_set_process_title()可以修改cmdline;

需要注意的是:

  1. 如果原本的 cmdline 比较长,而修改后的比较短,则cmdline保留原来的长度,多余的部分被修改为’\0’,所以,获取的时候需要处理一下,bash中可以使用strings,php中可以使用trim
  2. 如果原本的cmdline比较短,而修改后的比较长,则会被扩展,而不是截断

 

cmdline vs comm

/proc/$pid/comm 有16字节的限制

PowerShell 入门

PowerShell 是一个可以操作对象的高级shell,是一个支持模块的shell。

如何编写模块?参考:http://www.jb51.net/article/56229.htm 基本上就是在模块目录下写一个包含有一些函数的文件,一个这种文件就是一个模块,然后配之以一个同名(不同扩展名)的manifest文件

 

两种注释方式:

段注释:

 

行注释:

 

实例:

web请求:

方法1:http://blog.csdn.net/qq_34352010/article/details/53572234

方法2:

 

文本处理:

http://www.pstips.net/processing-text-1.html

http://www.pstips.net/processing-text-2.html

http://www.pstips.net/processing-text-3.html

解析url:http://www.pstips.net/processing-text-4.html

获取所有的IPv4地址:

获取ifconfig的ipv4地址:

注意: 正则表达式的正确使用使得事情变得更加利索

 

PowerShell 显示气球提示框: http://www.pstips.net/powershell-displaying-balloon-tip.html

多个对象之间用逗号分隔:

单引号与双引号:

单引号中的单引号,双引号中的双引号:

单引号中连续的两个单引号解释为1个单引号,双引号中连续的两个双引号解释为1个双引号

转移字符

一般都是用反斜线转义,但是powershell中使用反引号来转义,如:

 

命令结果赋值给变量的写法:

使用 $( cmd ) 的写法更舒服一些,更加接近于bash的写法

 

ISE比命令行写起来会舒服一些,不但有提示,还方便查帮助

PowerShell是已模块的形式添加功能的

选中命令时,下面就会出现命令的参数信息,按住ctrl点击命令时,参数信息界面就会隐藏

 

Win7升级Powershell 2.0到3.0

参考: https://www.microsoft.com/en-us/download/details.aspx?id=34595

下载一个十几MB的msu文件,执行安装,重启就行

注意:

如果提示您的系统不支持该更新,则可以尝试更新一下系统,然后在安装,本人遇到问题后,安装了几十个更新之后就可以安装该安装包了;

或者先安装 dotNetFx45_Full_setup.exe  ,在安装上面的下载也可以

 

Virtualbox 磁盘整理

Virtualbox有两个很不爽的地方:

  1. 一旦占用了内存,将不会再释放;多个类似的虚拟机不能内存复用
  2. 磁盘文件很大,且每个虚拟机的磁盘都是一个完整的copy;一旦磁盘文件被撑大,就算内部文件已经被删除,磁盘文件也不会收缩

理论上可以压缩虚拟机的磁盘文件的,基本步骤为: (参考: http://www.cnblogs.com/findumars/p/3897818.html

  1. 整理虚拟机磁盘
  2. 压缩虚拟机磁盘

磁盘工具:

windows: 下载: Sysinternals Suite 执行

该过程比较漫长

磁盘压缩方法:

30G 的磁盘文件可以压缩到22G