- 博客(19)
- 收藏
- 关注
原创 github浏览代码神器:sourcegraph
在github上面看代码不是很方便,主要是找定义或者引用不方便,也没有目录树。最近发现Chrome插件sourcegraph,使用它看github上的代码真是太方便了。安装插件后,打开github下面的某个repo,就能看见下图的标记点击上面标记后,进入界面:进入某个路径下面的某个文件,点击某个符号后出现下图,很方便就能找到定义和引用的位置了如果不是很方便安装Chr...
2020-01-10 11:46:52
966
原创 gtags找到定义在头文件中的类配置方法
对于cpp文件,gtags不能找到定义在头文件中的类。通过给官方发邮件咨询了解到:找定义在头文件中的类需要设置下面的环境变量export GTAGSFORCECPP=设置完成后,就能找到所有类的定义。另外,gtags还是比ctags好用很多很多,大家可以适用一下。多种查找代码工具对比,见:https://github.com/oracle/opengrok/wiki/Compariso...
2019-12-28 21:24:10
862
原创 gperftools 错误:cannot allocate memroy in static TLS block解决办法
dlopen错误如第一个图所示。解决办法:在编译之前注释掉src/config.h中的#define HAVE_TLS 1就可以解决!如图二所示。 参考:https://github.com/gperftools/gperftools...
2018-12-25 20:41:27
3508
原创 Gtags-cscope去除错误提示: GTAGS not found. Press ENTER or type command to continue办法
在 ~/.vimrc 设置let g:GtagsCscope_Quiet = 1就可以不在显示上面的错误提示了。P.S.利用gtags、gtags-cscope,在xshell等终端看c++代码也像IDE那样方便了:准确跳转到函数的定义,查找函数的多个引用、查找特殊字符等,谁用谁知道。enjoy!...
2018-11-02 16:15:47
2156
原创 程序异常退出且没有任何coredump解决方法
如果程序异常退出而且没有任何信息,我们应该怎样做呢?我们可以attach到某个工作进程或者线程,之后同时对exit和_exit设置断点。之后对程序发压,如果程序出现异常,我们可能看到出现问题的堆栈。最近测试一个新写的模块,程序也异常退出了,没有任何的core信息,利用上面的方法没有解决问题。如下:通过在google上搜索,找到下面有用的网页:https://stackoverflow.com/qu...
2018-04-19 22:03:06
8413
原创 通过backtrace_symbols输出信息定位coredump位置
有时我们会在程序中检测:SIGSEGV信号,收到信号后,打印出当前的堆栈信息,进而方便我们定位出错的地方。方法如下:近期在线上环境中出现coredump后,打印如下的堆栈信息:/var/ytt/mod_se/lib/libqsrch.so(_ZN14ImplSrchWorker8OnSignalEi+0x6a) [0x2aabd5e80aca]03-29 09:36:15 ERROR [102...
2018-04-05 21:31:15
1858
原创 类成员函数转换成void (*)和静态成员函数获取非静态成员变量的方法
很多第三方函数需要把函数转换成void(*)类型,如libevent 1.4版本中的event_set函数:如果要传递类成员函数给相应的函数我们应该怎样处理呢?仅仅传递类成员函数可以吗?不可以的!编译的时候会遇到下面的错误:cannot convert DataWatcher::HandlerFn from type void (DataWatcher::)(int, shor
2018-01-28 20:33:08
1476
原创 动态库加载动态库使用gflags的方法
最近做的项目,一个module需要加载多个插件,插件是用dlopen的方式加载的。module中使用一些gflags,而插件中也需要使用gflags。在module启动时执行ParseCommandLineFlags,之后在加载插件,读取/proc/self/commandline中的数据,之后也执行ParseCommandLineFlags,但是在插件中不能获取相应的flags的值,见最后一...
2018-01-14 17:05:18
2236
原创 程序员提升工作效率和保持健康的好用工具
Linux:1、autojump linux下面目录目录之间跳转强大工具,太实用!有了它,以后几乎很少用cd ls等命令2、fzf 让ctrl+r搜索历史执行命令更加清晰,还支持模糊搜索等功能3、cppman/stdman 对于c/c++程序员来说查看c++或者c语言的接口更加的方便,不用再查网页了windows:1、f.lux 调节屏幕色温,保护眼睛2、FadeTop
2018-01-02 11:35:11
476
原创 gdb single stepping until exit from function *, which has no line number information解决办法
前提:编译程序使用的4.7.2版本的gcc,同时编译的时候也使用了-g3的参数。如果不了解-g3的含义,可以参见:https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options利用gdb单步执行理解刚接手的程序的时候,提示下图中的错误:查了很多的资料,找了很多的解决办法:1、更改
2017-12-30 11:06:49
22010
原创 调试死锁(deadlock)的方法
如果程序运动不正常的时候,可以利用pstack看一下程序当然的状态,多次执行如下:[tangliang]$ pstack 31859Thread 3 (Thread 0x7f69b59d2700 (LWP 31860)):#0 0x000000380220e264 in __lll_lock_wait () from /lib64/libpthread.so.0#1 0x000000
2017-11-04 15:27:54
2185
原创 pprof不能解析符号的解决方法
利用tcmalloc(gperftools 2.0版本)检查程序出现的内存泄露。利用go版本的pprof解析设置HEAPPROFILE之后dump出来的file,虽然编译的时候加入了-g参数,但是还不能成功解析。如下图所示:利用google的site命令: *** site:https://github.com/gperftools/gperftools/issues,找到下面
2017-09-03 16:53:55
1191
原创 动态库编译加入参数:-Wl,-z,defs 编译期即可发现undefined reference to错误
动态库因为运行时才加载,所以一些缺少的符号没有在编译时被检查编译时加入参数:-Wl,-z,defs即可以在编译的时候发现undefined reference to错误。方法如下:
2017-09-01 09:58:21
2852
原创 github上找好资源的关键字:awesome
譬如你想要找c++方面的资源:在谷歌或者github搜索框中,输入 awesome cpp你会找到:https://github.com/fffaraz/awesome-cpp其他方面的资源的搜索方法同理。另外:https://learn-anything.xyz/ 这个网址也非常赞,以mindmap方式展现某一方面的资源:搜索关键字如:c++,可以看到下图的展示样式。还可以输入如machine
2017-09-01 09:44:51
1688
原创 没打开coredump,利用dmesg调试core的方法
线上的机器为防止coredump把机器打死,通常都会把core关闭。如果线上机器出现core等问题,该怎样进行调试呢?通过dmesg可以解决上面的问题。首先输入dmesg看相应的输出信息,如下图: 把上面的地址做差值就得到相应的出问题的代码地址,如下图: 如果没有gdb也可以用下面的命令进行计算:echo "obase=16; $(echo $(( 16#7fc4...
2017-03-05 16:23:04
2707
1
原创 gdb
GDB资源集合:https://sourceware.org/gdb/wiki/FAQDebug.Hacks中文版_深入调试的技术和工具https://www.youtube.com/watch?v=-n9Fkq1e6sg (GDB - A Lot More Than You Knew) gdb的其他操作1、编译程序的时候加入-g参数,这样编译的时候加入一些额外的信息,这样...
2016-12-18 19:01:12
359
原创 程序员常用的快捷操作
1、chrome插件vimiumvimium是一个神奇的插件,浏览网页的整个过程几乎不用鼠标了。下面列举几个非常常用的功能:书签内容查找:按“b”或者“B”,在弹出的对话框中输入查找的内容,之后选择,即可进入相应的书签对应的网页。对于书签内容极多的使用者,这个操作太方便。内容搜索:按“o”或者“O”,输入相应的内容即可进行搜索。其他常用的操作包括:“^”回到刚才的标签,“gi”进入...
2016-12-03 12:30:04
644
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人