上一页 1 2 3 4 5 6 7 ··· 18 下一页
摘要: ceph集群在线数据迁移 最近收到一个需求,客户希望将运行了多年的ceph集群服务器全部更换掉,因为这些老服务器性能和容量都已经无法满足当前业务的需求,并希望在迁移到新服务器的过程中,业务不中断。在参考一些网上的方案后,选择了一个方案进行了测试,效果还不错,决定将测试过程记录下来,并且自己写了些自动 阅读全文
posted @ 2023-12-08 18:01 苏格拉底的落泪 阅读(651) 评论(0) 推荐(0)
摘要: 参考资料 1. python多环境管理(venv与virtualenv) 阅读全文
posted @ 2023-12-08 13:44 苏格拉底的落泪 阅读(35) 评论(0) 推荐(0)
摘要: 文件加锁 1. 例子 #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> void lock_set(int fd, int type) { struct flock lock; lock.l_w 阅读全文
posted @ 2023-12-07 16:09 苏格拉底的落泪 阅读(82) 评论(0) 推荐(0)
摘要: 静态函数与类方法 静态函数其实和类的方法没什么关系,它只是恰好定义在类的内部而已,所以这里我用函数(function) 来形容它。它可以没有参数: class Person: @staticmethod # 用 staticmethod 这个修饰器来表明函数是静态的 def sayHello(): 阅读全文
posted @ 2023-12-07 10:41 苏格拉底的落泪 阅读(310) 评论(0) 推荐(0)
摘要: boost::intrusive_ptr shared_ptr最大的陷阱就是用同一个裸指针创建了多个shared_ptr,这会导致这些shared_ptr析构时,因为每个shared_ptr都有自己引用计数,导致这个裸指针多次销毁所以不能用一个裸指针来创建多个shared_ptr,但却可以来创建多个 阅读全文
posted @ 2023-11-28 17:55 苏格拉底的落泪 阅读(290) 评论(0) 推荐(0)
摘要: 粘着位sticky 粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。最常见的用法是在目录上设置粘滞位,使得只有目录内文件的所有者或者root用户才可以删除或移动该文件。要删除一个文件,不一定要有这个文件的写权限,但一定要有这个文件的上级目录的写权限。也就是说,即使没有一个 阅读全文
posted @ 2023-11-16 10:20 苏格拉底的落泪 阅读(371) 评论(0) 推荐(0)
摘要: 参考资料 1attribute__((packed))详解 2GCC的__attribute__扩展特性 阅读全文
posted @ 2023-11-13 14:57 苏格拉底的落泪 阅读(48) 评论(0) 推荐(0)
摘要: 修改已提交的 commit 信息,包括作者、邮箱 1. 背景:不同电脑配置了不同的用户名、邮箱,例如:不小心用公司电脑提交了 commit 到个人的github 仓库,想改掉已经提交的 commit 的信息。 2. 修改用户名、邮箱 // 全局修改 git config --global user. 阅读全文
posted @ 2023-11-12 11:16 苏格拉底的落泪 阅读(3100) 评论(0) 推荐(0)
摘要: vscode怎么打开settings.json文件 cmd + shift + p,输入setting: 在搜索框输入:settings.json,并选中: 参考资料 1. vscode怎么打开settings.json文件 2. 阅读全文
posted @ 2023-11-02 09:01 苏格拉底的落泪 阅读(514) 评论(0) 推荐(0)
摘要: pycharm:远程连接服务器调试代码 参考资料 1. pycharm:远程连接服务器调试代码 阅读全文
posted @ 2023-11-01 19:31 苏格拉底的落泪 阅读(57) 评论(0) 推荐(0)
摘要: 恢复误删的本地或远程分支 参考资料 1. 恢复误删的本地或远程分支 阅读全文
posted @ 2023-10-23 11:02 苏格拉底的落泪 阅读(426) 评论(0) 推荐(0)
摘要: mknod 1. 创建名为test的管道文件 mknod test p 阅读全文
posted @ 2023-10-20 16:38 苏格拉底的落泪 阅读(44) 评论(0) 推荐(0)
摘要: 打印函数局部变量的值 1.例子: #include <stdio.h> void fun_a(void) { int a = 0; printf("%d\n", a); } void fun_b(void) { int b = 1; fun_a(); printf("%d\n", b); } voi 阅读全文
posted @ 2023-10-16 22:54 苏格拉底的落泪 阅读(311) 评论(0) 推荐(0)
摘要: 在匿名空间设置断点 1. 例子 namespace Foo { void foo() { } } namespace { void bar() { } } 在gdb中,如果要对namespace Foo中的foo函数设置断点,可以使用如下命令: (gdb) b Foo::foo 如果要对匿名空间中的 阅读全文
posted @ 2023-10-16 22:46 苏格拉底的落泪 阅读(72) 评论(0) 推荐(0)
摘要: 参考资料 1. 使用backtrace获取堆栈信息 2. How to print a stack trace whenever a certain function is called 阅读全文
posted @ 2023-10-16 21:46 苏格拉底的落泪 阅读(101) 评论(0) 推荐(0)
摘要: 为fork调用设置catchpoint 1.例子: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; pid = fork(); 阅读全文
posted @ 2023-10-16 19:36 苏格拉底的落泪 阅读(56) 评论(0) 推荐(0)
摘要: 为exec调用设置catchpoint 1. 例子: #include <unistd.h> int main(void) { execl("/bin/ls", "ls", NULL); return 0; } 使用gdb调试程序时,可以用catch exec命令为exec系列系统调用设置catch 阅读全文
posted @ 2023-10-16 19:11 苏格拉底的落泪 阅读(100) 评论(0) 推荐(0)
摘要: 为vfork调用设置catchpoint 1.例子: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; pid = vfork() 阅读全文
posted @ 2023-10-16 19:06 苏格拉底的落泪 阅读(40) 评论(0) 推荐(0)
摘要: 同时调试父进程和子进程 1. 参考资料 1. gdb手册 2. 同时调试父进程和子进程 阅读全文
posted @ 2023-10-16 11:13 苏格拉底的落泪 阅读(39) 评论(0) 推荐(0)
摘要: 设置读写观察点 1.例子: #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(10); } } 阅读全文
posted @ 2023-10-16 10:16 苏格拉底的落泪 阅读(79) 评论(0) 推荐(0)
摘要: 设置读观察点 1. 例子 #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(10); } } 阅读全文
posted @ 2023-10-16 10:12 苏格拉底的落泪 阅读(49) 评论(0) 推荐(0)
摘要: 设置观察点只针对特定线程生效 1. 说明 #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(1 阅读全文
posted @ 2023-10-16 09:48 苏格拉底的落泪 阅读(76) 评论(0) 推荐(0)
摘要: 显示gdb版权相关信息 使用gdb时,如果想查看gdb版权相关信息,可以使用“show copying”命令: (gdb) show copying GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free 阅读全文
posted @ 2023-10-16 09:41 苏格拉底的落泪 阅读(42) 评论(0) 推荐(0)
摘要: 设置观察点 1. 例子 #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(10); } } i 阅读全文
posted @ 2023-10-16 09:27 苏格拉底的落泪 阅读(151) 评论(0) 推荐(0)
摘要: 输出信息多时不会暂停输出 有时当gdb输出信息较多时,gdb会暂停输出,并会打印“ Type <return> to continue, or q <return> to quit ”这样的提示信息,如下面所示: 81 process 2639102 0xff04af84 in __lwp_park 阅读全文
posted @ 2023-10-16 09:20 苏格拉底的落泪 阅读(94) 评论(0) 推荐(0)
摘要: 退出时不显示提示信息 gdb在退出时会提示: A debugging session is active. Inferior 1 [process 29686 ] will be killed. Quit anyway? (y or n) n 如果不想显示这个信息,则可以在gdb中使用如下命令把提示 阅读全文
posted @ 2023-10-16 09:18 苏格拉底的落泪 阅读(151) 评论(0) 推荐(0)
摘要: 启动时不显示提示信息 $ gdb GNU gdb (GDB) 7.7.50.20140228-cvs Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http: 阅读全文
posted @ 2023-10-16 09:15 苏格拉底的落泪 阅读(76) 评论(0) 推荐(0)
摘要: 搭建foundationdb集群 对stor01、stor02、stor03设置如下配置文件: 1. fdb.cluster配置文件 foundationdb:[email protected]:4500,192.168.0.21:4500,192.168.0.22:4500 foundationdb 阅读全文
posted @ 2023-10-16 09:13 苏格拉底的落泪 阅读(482) 评论(0) 推荐(0)
摘要: 只允许一个线程运行 使用gdb调试多线程程序时,默认的调试模式为:一个线程暂停运行,其它线程也随即暂停;一个线程启动运行,其它线程也随即启动。要知道,这种调试机制确实能帮我们更好地监控各个线程的“一举一动”,但并非适用于所有场景。一些场景中,我们可能只想让某一特定线程运行,其它线程仍维持暂停状态。要 阅读全文
posted @ 2023-10-15 20:49 苏格拉底的落泪 阅读(1454) 评论(0) 推荐(0)
摘要: 调试已经运行的进程 1.例子: #include <stdio.h> #include <pthread.h> void *thread_func(void *p_arg) { while (1) { printf("%s\n", (char *)p_arg); sleep(10); } } int 阅读全文
posted @ 2023-10-15 20:29 苏格拉底的落泪 阅读(518) 评论(0) 推荐(0)
摘要: 调试子进程 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的 分别以及同时 调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-for 阅读全文
posted @ 2023-10-15 20:26 苏格拉底的落泪 阅读(432) 评论(0) 推荐(0)
摘要: 打印内存的值 1. 例子 #include <stdio.h> int main(void) { int i = 0; char a[100]; for (i = 0; i < sizeof(a); i++) { a[i] = i; } return 0; } gdb中使用“x”命令来打印内存的值, 阅读全文
posted @ 2023-10-15 19:18 苏格拉底的落泪 阅读(887) 评论(0) 推荐(0)
摘要: 让catchpoint只触发一次 1. 例子: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; int i = 0; for ( 阅读全文
posted @ 2023-10-15 19:08 苏格拉底的落泪 阅读(44) 评论(0) 推荐(0)
摘要: 进入和退出图形化调试界面 1. 例子 #include <stdio.h> void fun1(void) { int i = 0; i++; i = i * 2; printf("%d\n", i); } void fun2(void) { int j = 0; fun1(); j++; j = 阅读全文
posted @ 2023-10-15 19:00 苏格拉底的落泪 阅读(287) 评论(0) 推荐(0)
摘要: 打印数组的索引下标 1. 例子 #include <stdio.h> int num[10] = { 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7, 1 << 8, 1 << 9 }; int main (void) { 阅读全文
posted @ 2023-10-15 18:39 苏格拉底的落泪 阅读(104) 评论(0) 推荐(0)
摘要: 打印数组中任意连续元素 1. 例子 #include <stdio.h> int main(void) { int array[201]; int i; for (i = 0; i < 201; i++) array[i] = i; return 0; } 在gdb中,如果要打印数组中任意连续元素的 阅读全文
posted @ 2023-10-15 18:35 苏格拉底的落泪 阅读(432) 评论(0) 推荐(0)
摘要: 打印ASCII和宽字符字符串 1. 例子: #include <stdio.h> #include <wchar.h> int main(void) { char str1[] = "abcd"; wchar_t str2[] = L"abcd"; return 0; } 用gdb调试程序时,可以使 阅读全文
posted @ 2023-10-15 18:28 苏格拉底的落泪 阅读(330) 评论(0) 推荐(0)
摘要: 设置观察点 1. 例子: #include <stdio.h> #include <pthread.h> typedef struct { int a; int b; int c; int d; pthread_mutex_t mutex; } ex_st; int main(void) { ex_ 阅读全文
posted @ 2023-10-15 15:38 苏格拉底的落泪 阅读(51) 评论(0) 推荐(0)
摘要: run和start区别 gdb调试器提供了多种方式来启动目标程序,其中最常用的就是 run 指令,其次为 start 指令。也就是说,run 和 start 指令都可以用来在gdb调试器中启动程序,它们之间的区别是: 1、默认情况下,run 指令会一直执行程序,直到执行结束。如果程序中手动设置有断点 阅读全文
posted @ 2023-10-15 12:22 苏格拉底的落泪 阅读(372) 评论(0) 推荐(0)
摘要: 断点管理 命令说明: 命令 说明 break 断点命令 break 函数名 为函数设置断点 break 代码函数 为某一行设置断点 break 类名:函数名 在某个类的函数设置断点 break 文件名:函数名 在文件名指定某个函数设置断点 break 文件名:行数 在文件名执行的代码行设置断点 br 阅读全文
posted @ 2023-10-15 11:14 苏格拉底的落泪 阅读(327) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 18 下一页