0%

问题描述

业务背景: 有一台由多个Docker容器组成的仿真设备环境,1个Docker部署Redis服务端,剩余每个Docker都作为Redis客户端,用于模拟一块单板。

问题: 仿真设备启动中,概率出现Redis的某个字符串键被不符合预期地改写成空串,导致客户端Docker从Redis获取的数据有问题。需要定位是哪个Docker上的哪个进程改写了Redis数据库。

阅读全文 »

背景介绍

GDB不仅可以用来调试程序,还可以直接修改被调试程序的二进制文件。这种方式相比于改源码重新编译、gdb attach有什么优势呢?考虑以下企业生产环境中的几个调试场景:

  • 需要修改的二进制文件是其他领域的,你没有源码和编译工程,让相关领域出调试对接件比较费时,但你只想临时改一行别人的代码,几分钟内完成验证。
  • 调试环境上,使用gdb attach进程方式有困难
    • 被调试的服务(进程)没有启动断点(可定位性很差),或者gdb手动拉起的方法非常复杂,等服务正常启动后再attach已经赶不上打断点的时机。
    • 长时间gdb挂住业务进程导致触发丢心跳复位。
    • 你不确定修改的二进制文件同时被几个进程加载,但你诉求很明确,就是直接改文件,对所有进程生效。

以下举一个简单的例子,介绍GDB修改程序二进制文件的技巧:

阅读全文 »

前言

docker拉取的镜像默认存储在根路径(/var/lib/docker),但根路径存储空间有限。我们可以通过挂载更大的磁盘,将docker数据迁移到挂载磁盘上, 以解决空间不足问题。具体方法如下:

阅读全文 »

背景

git clone龟速或出错,需要配置代理。

方法

首先,你的本地机器必须有socks5代理

git bash,敲如下命令:

1
2
3
4
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
git config --global http.sslverify false
git config -l
阅读全文 »