-
查看寄存器rip:
(gdb) i r rip
修改寄存器rip:
(gdb) set $rip = 0x400390
注意事项:
与修改变量不同,修改寄存器的值时,需要在寄存器名称前加美元符号$
-
问题背景:
研究的目的主要就是为了深入学习和理解PHP7内核中哈希表实现原理,因为HashTable是PHP内核最重要的一个数据结构,万能的PHP数组以及函数、类等等的内部实现全都离不开HashTable数据结构;此外对于想熟练编写PHP扩展的码友,学习并理解哈希表也是非常重要的。
获取源码:
https://github.com/blogdaren/PHP7HashT...
-
问题背景:
有时候我们提交一个项目后,往往会发现项目下的cache目录一起被纳入了版本控制,这并不是我们想要的,所以如何将cache目录(当然也包括该目录下所有子目录以及文件)脱离版本控制呢?
解决方案:
1、先演习一下看看会发生啥:
# git -r --cached -n /path/to/cache
2、确认无误后下达真实命令:
# git -...
-
问题背景:
有时候GDB调试程序到半路不想调了,只想终止当前正在调试的程序,但是注意并不想退出GDB,怎么办?
解决方案-1:
直接运行 r 命令,让程序重新从头开始运行,此法差强人意;
解决方案-2:
直接执行kill 命令,默认是发送信号量15(SIGTERM)给当前调试进程,默认动作就是退出程序,推荐此法。
-
问题背景:
熟悉的代码会得到如题示的结果: printf("%u\n", (size_t)-1);
预备知识:
http://www.blogdaren.com/post-2615.html
解决方案:
0X01、整数1的二进制如下:
00000000000000000000000000000001
0X02、由于-1是负数,所以二进制的第一位需要取值为1即...
-
问题背景:
在PHP内核的字符串实现源码中我们发现了这么一个结构体如下:
struct _zend_string { ...
-
问题背景:
通过单链表实战学生成绩管理系统,涉及到的知识点比较广泛(仅关注原理、业务逻辑校验细节未关注):
单链表自身、结构体、指针、位操作、趣味宏、堆内存、排序算法等等。
先看效果图:
实现代码:
/*
* ========================================================...
-
问题背景:
GDB调试C程序时,经常需要打印结构体的内容,默认情况下输出很不直观,看起来很费劲,比如:
(gdb) p *ht
$6 = {gc = {refcount = 1, u = {v = {type = 7 '\a', flags = 0 '\000', gc_info = 0}, type_info = 7}}, u = {v = {flags = 18 '\022', ...
-
问题背景:
-8 转换为二进制是多少?
解决方案:
第一步:将 8 转换为二进制得到:
00000000 00000000 00000000 00001000
第二步:由于-8是负数,所以可得其原码为:
10000000 00000000 00000000 00001000
第三步:根据原码继续取其反码从而得到二进...
-
问题背景:
阅读PHP内核代码期间,发现有大量的宏:EXPECTED(condition)、UNEXPECTED(condition),比如在HashTable的相关实现中就有如下代码片段:
if (nSize < HT_MIN_SIZE) {
nSize = HT_MIN_SIZE;
} else if (UNEXPECTED(nSize &...
-
问题背景:
int main()
{
int i = 100;
printf("%d %d\n", i++, i--);
return 0;
}
对于初学者而言,上面的代码会输出令人疑惑结果:100 99
问题原因:
printf()函数打印多个参数时,参数遵循"先进后出"的栈原则。
问题分析:
1、参数i入栈(i--中的i);...
-
问题背景:
国际象棋的棋盘为 8 * 8 的方格棋盘,现将 "马" 放在任意指定的方格中, 按照 "马走日" 的规则将 "马" 进行移动,要求每个方格只能进入一次,最终使得 "马" 走遍棋盘64个方格。
问题说明:
作者自行实现的代码好像有BUG,分享出来,望不吝赐教。
实现源码:
#include <stdio...
-
问题背景:
直接上代码:
#include <stdio.h>
int main()
{
int number, result;
do{
printf("请输入一个整数:");
result = scanf("%d", &number);
printf("你输入的整数是:%d\n", numbe...
-
问题背景:
给定单词 phpcreeper,假设光标当前位于php之后,那么如何快速的将phpcreeper整体转换成大写的PHPCREEPER,反过来也一样。
问题解决:
大写:<ESC>gUiw
小写:<ESC>guiw
问题补充:
<ESC>gUw 具有类似的作用,但其只能将从当...
-
问题背景:
微信之零钱通和支付宝之余额宝其实是同一个理财产品,所以我们就以零钱通来举例好了。
已知:
1、零钱通7日的年化收益率是1.98%;
2、零钱通当前总金额为1000元;
3、一年按照365天计算;
请问:
一个月的收益大约是多少?
问题分析:
首先明确概念7日的年化收益率指的的货币基金最近7日的平均年化收益率,它...
我就遇到了这个问题,终于找到解决办法...