2013-11-16 14:17
⁄ 工业·编程
⁄ 共 1908字
微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少。短链接的主要职责就是把原始链接很长的地址压缩成只有6 个字母的短链接地址,当我们点击这6 个字母的链接后,我们又可以跳转到原始链接地址。
开始以为短链接是按照某种算法把原始链接压缩为短链接,再根据算法从短链接反算成原始链接的。后来尝试了下压缩算法(gzip 压缩算法),发现对于url 这种字符串越是压缩,长度就越长。通过对压缩算法的一些了解...
java, 微博, 短链接, 算法阅读全文
2013-11-15 23:00
⁄ 工业·编程
⁄ 共 628字
CCCCCCCC
微软C++ debugging运行时用该值标记未初始化过的栈内存
CDCDCDCD
微软C++ debugging运行时用该值标记未初始化过的堆内存
FEEEFEEE
微软的HeapFree函数用该值来标记被释放了的堆内存
ABABABAB
为堆分配的内存后, 微软的HeapAlloc函数用该值标记"no man's land"哨兵位.
所谓哨兵位(Guard Byte)就是所分配的内存的起始和终止地址上的内存的值.
BAADF00D
微软的LocalAlloc函数用该...
WinDbg, 软件调试阅读全文
2013-11-15 06:08
⁄ 科技·视野
⁄ 共 8208字
11月10日下午,腾讯公司举办的“WE大会”在深圳举行。腾讯董事会主席兼CEO马化腾在会上发表演讲时指出,以前很多企业觉的互联网是新经济、虚拟经济,与传统行业没有关系,现在互联网已经是主体经济不可分割的一部分。越来越多的实体、个人和设备都连接在一起。
在演讲中,他分享了一些自己对互联网未来的思考,称为“通向互联网未来的七个路标”。
第一个路标:连接一切
马化腾称,近两年,手机成为人的一个电子器官的延伸这个特征...
互联网, 趋势, 马化腾阅读全文
2013-11-14 23:00
⁄ 工业·编程
⁄ 共 857字
1. 如何Debug一个进程的子进程?
答: 使用WinDBG attach到父进程, 然后输入命令".childdbg 1"(无引号). 这样子进程在刚刚被加载的时候, WinDBG就Attach上去了. 这两个进程的debug session都在一个WinDBG的窗口里, 如果想要切换当前进程, 可以使用命令"|"来查看所有的进程, 使用"|0s"来切换到ID为0的进程, 以此类推.
2. 如何在进程刚刚加载的时候, 就使用Debugger attach上去?
答: 使用GFlags. 参...
WinDbg, 软件调试阅读全文
2013-11-14 22:58
⁄ 工业·编程
⁄ 共 9860字
检查dump文件的时候, 我们经常会使用下面的命令来获得所有线程上的调用栈
~*e !clrstack
输出结果举例如下:
OS Thread Id: 0x1b30 (15) Child-SP RetAddr Call Site 0000000034a9ed00 000006424e611fc0 System.Threading.WaitHandle.WaitOne(Int64, Boolean) 0000000034a9ed40 00000642782f174b System...
WinDbg, 软件调试阅读全文
2013-11-14 22:57
⁄ 工业·编程
⁄ 共 1538字
当我们在调试器中分析问题时, 经常需要查看不同内存块的内容以分析产生的原因, 并且在随后验证所做出的假设是否正确. 由于各个对象的状态都是保存在内存中的, 因此内存的内容也就相当于对象的状态.
d命令最常见的格式就是根据指定的类型信息来显示存储在某地址中的数据. 调试器并不会去猜测这个地址上存储的是什么数据, 因为在大多数情况下猜测都是错误的. 所以需要用户显式地制定按照何种格式来解析数据. 命令格式如下:
d [typ...
WinDbg, 软件调试阅读全文
2013-11-14 22:55
⁄ 工业·编程
⁄ 共 377字
命令
============
dv
Display Variable的缩写, 查看局部变量.
dv /i
查看局部变量, 并显示符号的类型和参数类型.
dv /V
查看局部变量, 并显示变量的存储位置.
dv /V VariableName
指定需要查看的变量的名字
dv 02sample!gGlo*
dv命令可以带有通配符, 来查看具有某命名模式的变量.
举例:
dt
Display Type的缩写. 当变量的类型为复合类型, 比如说结构体或者类, 那么dv命令只会显示变量的地址. dt命令可以将一块内存按照某...
WinDbg, 软件调试阅读全文
2013-11-14 22:54
⁄ 工业·编程
⁄ 共 373字
命令
==========
k
k命令显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256。
kp 5
显示调用栈中前5个函数以及他们的参数.
kb 5
显示调用栈中前五个函数以及他们的前三个参数.
kf 5
显示在调用栈中五个函数所使用的栈的大小.
每个栈帧所占的空间使用量的计算方法是: 将当前函数的栈基指针与在函数中调用的任何一个函数栈基指针相减.
举例:
手动构造栈的实践- 如何手工构造调用栈
============
首先...
WinDbg, 软件调试阅读全文
2013-11-14 22:54
⁄ 工业·编程
⁄ 共 1039字
命令
==========
~0 bp 02sample!KBTest::Fibonacci_stdcall "r esp"
在零号线程上的KBTest类的Fibonacci_stdcall函数上设置断点, 并且在触发断点时执行"r esp"命令.
bl
列出所有已经设置了的断点
bc *
清除所有断点
bp 02sample!KBTest::Fibonacci_stdcall “r esp;g”
在所有线程上设置断点, 并且在触发断点时执行"resp;g"两条命令.
bm 02sample!*kbtest*
命令bm可以在参数中指定一个符号模...
WinDbg, 软件调试阅读全文
2013-11-14 22:53
⁄ 工业·编程
⁄ 共 192字
命令
==========
u .
u $ip
上面的两个命令是效果是一样的, 反汇编当前$ip地址上的8条命令.
uf .
uf $ip
上面两个命令的效果是一样的, 反汇编当前$ip地址上的整个函数.
ub .
ub $ip
反汇编$ip之前的8条指令.
ub $ip L2a
反汇编$ip地址之前的42条指令.
u $ip $ip+a
反汇编地址$ip到地址$ip+10之间的指令. 注意, 这里包括$ip, 不包括$ip+10。
举例:
WinDbg, 软件调试阅读全文