Contents

ARST打卡第85周[85/521]

Algorithm

LeetCode/48_旋转图像

Review

TED演讲:为什么我们会破坏爱情?怎样才能维系一段长期的关系?

我的看法:

  1. 你想要什么,你就会找到证据去证实你想要的东西,所以你想保持距离,就很难深入交流,你认为你找不到好的伴侣,你就会不会疏远ta。所以你只有保持想要好好谈恋爱,并相信你的伴侣,你才不会找佐证去认为你的伴侣不好
  2. 和伴侣合作
  3. 一起反思

Tips

论 Python 装饰器控制函数 Timeout 的正确姿势

浅析Linux中的零拷贝技术

Share

gdb的一些调试技巧

pstack 9809[PID]

gdb附加或者启动: gdb attach pid; gdb xxxx, run xxxxx xxxxx; 给某个方法设置断点 b xxx_func delete breakpoints 删除断点 给某个代码位置设置断点 b xxxx.c:1210 layout 同步查看代码 ctrl+x +a 退出 layout n 执行下一步 s 进入函数内部 p 查看 变量内容 x 查看内存内容 c 继续执行

gdb /usr/bin/xxxx core.xxxx; bt 查看coredump的线程的堆栈 info thread 查看其他线程情况 thread apply all bt 查看其他所有线程的堆栈 p 查看 变量内容 根据变量的内容判断coredump问题的可能原因, 常见原因: 内存访问越界(小心 memset memcpy strcpy sprintf 等函数) 使用了被释放的对象或者内存 对象内存使用了未经过初始化的指针或者对象 内容被破坏(踩内存) p 命令 结合c里面的指针操作符使用 p *(struct everythingyouwant * 0x78dddddd)

x 查看内存内容

gdb如何把输出打印到文件中 (gdb) set logging file (gdb) set logging on (gdb) thread apply all bt (gdb) set logging off

手段1: 抓包分析,通过抓包分析客户端的问题 手段2: 疑难问题可以通过strace工具分析客户端的API调用序列然后进行分析。(gitlab server的问题) 针对可能存在的内核问题,可以通过开启nfs客户端调试日志来判断 sysctl –a |grep nfs sysctl -w nfs_debug = 65535 sysctl -w rpc_debug=65535 journalctl –kf 查看内核日志