- 博客(325)
- 资源 (92)
- 收藏
- 关注
原创 vim 多标签
多标签直接在编辑的时候输入:vim -p 要编辑的文件名如vim -p * 就是编辑当前目录的所有文件多个标签间进行切换时向右切换gt,向左切换用gT在编辑的时候想增加一个标签就可以:tabnew filename:tabc 关闭当前的tab:tabo 关闭所有其他的tab:tabs 查看所有打开的tab:tabp
2014-08-29 20:58:15 768
原创 vim 跳转到函数、变量定义处:
跳转到函数、变量定义处:[+ctrl+i 跳转到函数、变量和#define[+ctrl+d 跳转到#define处ctrl+i 向前跳到前几次光标位置ctrl+o 向后跳到后几次光标位置函数体跳转:[[]][]][{}
2014-08-29 20:43:00 21015
原创 vim使用—移动到文件开始和结束位置和当前位置(gg,G)、快速定位到当前光标所在变量或函数的定义处(gd)、自动对齐C和C++程序(先gg再=再G)、自动补全变量名,函数名和字符串ctrl+n或ct
1、将光标移动到文件的开始位置或结束位置: gg 将光标移动到文件的开始位置。 G 将光标移动到文件的最后一行。 对当前行做标记,例如ma,即标记当前行为a行,mb,即标记当前行为b行,mc,即...等等。 要回到a行使用'a。要回到b行使用'b。1.1 vim
2014-08-29 19:52:59 3953
原创 VIM编辑多个文件
在本章前,你都是为每一个文件启动一次 Vim 的。实际上还有其它办法。如下命令就可以在 Vim 中打开另一个文件: :edit foo.txt你可以用任何其它文件名取代上面的 "foo.txt"。Vim 会关闭当前文件并打开另一个。但如果当前文件被修改过而没有存盘, Vim 会显示错误信息而不会打开这个新文件: E37: No write since las
2014-08-29 17:34:28 5694
原创 C++中嵌入python
http://www.vimer.cn/2010/11/cc%E4%BB%A3%E7%A0%81%E4%B8%AD%E8%B0%83%E7%94%A8python%E8%84%9A%E6%9C%AC.html#!/usr/local/services/python/bin/python# -*- coding: utf-8 -*-import tracebackdef hello(
2014-08-29 16:36:48 541
原创 G++ -I 与 -L选项 编译 连接 选项
经常会有用的-I 与 -L选项;-I选项: -I/root/include ,此用来引入一个头文件包含目录;-L选项:-L/root/lib ,此用来引入一个库文件包含目录; CXX= g++ TARGET= py C_FLAGS+= -g-Wall INC= -IC:/Python27/include/LIB= -LC:/P
2014-08-29 16:18:43 4872 2
原创 Linux 内存检测工具 memwatch的使用
http://blog.csdn.net/kehyuanyu/article/details/25217907
2014-08-29 14:05:18 501
原创 掌握 Linux 调试技术
实用的内存和内核工具您可以使用 Linux 上的调试工具,通过各种方式跟踪用户空间和内核问题。请使用下面的工具和技术来构建和调试您的源代码: 用户空间工具: 内存工具:MEMWATCH 和 YAMDstraceGNU 调试器(gdb)魔术键控顺序内核工具: 内核源代码级调试器(kgdb)内建内核调试器(kdb)Oops
2014-08-29 13:46:20 325
原创 调试技巧之 gcc/g++ -instrument-functions 参数
调试技巧之 gcc/g++ -instrument-functions 参数参考 GCC 函式追蹤功能 finstrument-functions __attribute__ +用 Graphviz 可视化函数调用 ibm 用 Graphviz 可视化函数调用 gcc/g++使用-finstrument-functions來觀察code
2014-08-29 13:37:56 915
原创 Trace and profile function calls with GCC
Trace and profile function calls with GCC Posted on 2010/10/06 42Software debugging is a complex task. There is always the need to collect all available information, in order to
2014-08-29 13:33:18 542
原创 •Monitoring Function Calls
http://linuxgazette.net/151/melinte.html[ The example code in this article is available here: addr2line.ccpptraced.cppctraced.cctrace.shlibctrace.clibctrace.expMakefileREADMEtrace-O2.txttrace-pl
2014-08-29 13:33:03 397
原创 GCC Function Instrumentation
http://codingrelic.geekhold.com/2010/09/gcc-function-instrumentation.htmlOne of gcc's more obscure features is -finstrument-functions. It was implemented byCygnus Solutions, presumably as part of
2014-08-29 13:32:22 589
原创 addr2line探秘
在Linux下写C/C++程序的程序员,时常与Core Dump相见。在内存越界访问,收到不能处理的信号,除零等错误出现时,我们精心或不精心写就的程序就直接一命呜呼了,Core Dump是Linux仁慈地留下的程序的尸体,帮助程序员们解决了一个又一个问题。有时配置不给力,Linux直接毁尸灭迹,没有了Core文件;又有时,刚好磁盘空间不足,Core文件写不下了。没有Core文件的时候,如何
2014-08-29 13:26:41 411
原创 tar 解压缩命令
tar 解压缩命令tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
2014-08-29 13:22:19 461
原创 -bash: ./full_build.sh: /bin/bashM: bad interpreter: No such file or directory
执行一个脚本full_build.sh 时, 一直是提示:-bash: ./full_build.sh: /bin/bashM: bad interpreter: No such file or directory出现上面错误的原因之一是脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 使用vim编辑器打开脚本, 运行::set ff?可以看到DOS或UNIX的字样. 使
2014-08-29 12:22:35 609
原创 二进制工具集简析 ar 对静态库
二进制工具集简析作者:苗老师,华清远见嵌入式学院讲师。1、addr2line能够把程序地址转换为文件名和行号,前提是这个可执行文件包括调试符号1 #include 2 3 void foo() 4 { 5 printf("T
2014-08-29 11:47:52 725
原创 输出并解析C++的调用堆栈 -rdynamic ******************
http://blog.atime.me/research/glibc-backtrace-parsing.html
2014-08-29 11:28:04 1498
原创 Addr2line 和调试器
使用 Addr2line 将函数地址解析为函数名Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。这种功能对于将跟踪地址转换成更有意义的内容来说简直是太棒了。要了解这个过程是怎样工作的,我们可以试验一个简单的交互式的例子。(我直接从 shell 中进行操作,因为这是最简单地展示这个过程的方法
2014-08-29 11:22:12 615
原创 LINUX下GDB调试
(注:本文实例在SecureCRT中得到验证,以下为全文转载:)本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。命令
2014-08-29 10:39:48 408
原创 深入剖析 linux GCC 4.4 的 STL string
http://blogs.360.cn/360cloud/2012/11/26/linux-gcc-stl-string-in-depth/
2014-08-29 10:17:12 582
原创 标准C++类std::string的内存共享和Copy-On-Write技术
1、 概念Scott Meyers在《More Effective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书。这就是“拖延战术”,直到你
2014-08-29 09:47:18 1101
原创 dump main可执行文件
举例如下:#include #include #include #include #include void dump(int signo){void *buffer[30] = {0};size_t size;char **strings = NULL;size_t i = 0;size = backtrace(buffer, 30);fpri
2014-08-28 22:29:48 460
原创 dump
举例://test.cppclass Base{public:Base();int a;};Base::Base(){}class Foo: public Base{public:int val;Foo * pnext;};int main(){Foo myFoo;return 0;}//makefileall:t
2014-08-28 22:26:16 386
原创 backtrace函数和addr2line工具 C函数实现
// st.hvoid fun4();#include #include #include #include "./st.h"//using::std- /* 打印调用栈的最大深度 */#define DUMP_STACK_DEPTH_MAX 16-/* 打印调用栈函数 */void dump_trace() {void *sta
2014-08-28 20:53:15 2614
原创 backtrace函数和addr2line工具 ---抛异常 类实现
简单的应用一个简单的示例程序,实现一个异常类,这个异常类被抛出时记录了当时的调用栈信息。/* show_bt.cpp */#include #include #include #include using namespace std;class MyException {public: MyException(); virtual ~MyException()
2014-08-28 20:47:26 1167
原创 多线程------Linux上如何从C++程序中获取backtrace信息
http://skyscribe.github.io/blog/2012/11/27/linuxshang-ru-he-cong-c-plus-plus-cheng-xu-zhong-huo-qu-backtracexin-xi/
2014-08-28 19:26:26 1542
原创 nm命令
我们也可以使用nm命令直接查看tree.o的相关信息。# nm -A tree.otree.o:00000000 T _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_basetree.o:00000000 T _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_basetree.o:00000000 T _Z
2014-08-28 16:16:02 817
原创 c++filt address2line GDB栈跟踪
http://www.wuzesheng.com/?p=1804 前几天帮同事跟踪的一个程序莫名退出,没有core dump(当然ulimit是打开的)的问题。我们知道,正常情况下,如果程序因为某种异常条件退出的话,应该会产生core dump,而如果程序正常退出的话,应该是直接或者间接的调用了exit()相关的函数。基于这个事实,我想到了这样一个办法,在程序开始时,通过系统提供的ate
2014-08-28 16:03:56 1346
原创 使用Gnu gprof进行Linux平台下的程序分析
http://blog.csdn.net/bendanban/article/details/7742593http://www.cnblogs.com/likwo/archive/2012/12/20/2826988.html
2014-08-28 15:29:18 375
原创 在C/C++程序中打印当前函数调用栈
最近调试程序学到的几个挺有用的函数,分享一下,希望对用C/C++的朋友有所帮助!1. 调用栈系列下面是函数原型:1234#include "execinfo .h"int backtrace(void **buffer, int size);char **backtrace_symbols(void *const *buffer, int s
2014-08-28 15:13:24 1608
原创 编程工具系列之一------使用GDB的堆栈跟踪功能
编程工具系列之一------使用GDB的堆栈跟踪功能 在调试程序的过程中,查看程序的函数调用堆栈是一项最基本的任务,几乎所有的图形调试器都支持这项特性。 GDB调试器当然也支持这一特性,但是功能更加灵活和丰富。 GDB将当前函数的栈帧编号为0,为外层函数的栈帧依次加1,这些编号将成为一些GDB命令的参数,以指明将要操作的是哪一个函数的栈帧。
2014-08-28 15:08:02 474
原创 traceback.print_stack(file=sys.stdout)找程序流程
def do_event_in(self, buf): traceback.print_stack(file=sys.stdout) s = traceback.extract_stack() print '%s Invoked me!'%s[-2][2] log_debug('server in %s' % buf)
2014-08-28 14:58:08 1049
原创 抛异常找程序执行流程
Traceback (most recent call last): File "./tcp_server.py", line 139, in unit.start() File "/data/dreamliang/mySvn/sdn_proj/branches/oss/common/poller_timer_unit.py", line 23, in start
2014-08-28 14:49:33 1557
原创 ps命令和jobs kill
http://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-103-5/根据需要选择和排列进程的显示方式使用 ps到目前为止所讨论的 ps 命令仅列出从终端会话启动的进程(注意清单 14 中的第二个例子的 SID 列,即会话 ID 列)。要通过控制终端查看所有进程,使用 -a 选项。-x 选项显示不使用控制终端的进程,-e 选项显示每一个
2014-08-28 14:17:22 1409
原创 GDB 栈信息
:~> gdb myStackGNU gdb 6.6Copyright (C) 2006 Free Software Foundation, Inc.GDB is free software, covered by the GNU General Public License, and you arewelcome to change it and/or distribute co
2014-08-28 13:58:42 419
原创 VIM文本替换命令
在VIM中进行文本替换: 1. 替换当前行中的内容: :s/from/to/ (s即substitude) :s/from/to/ : 将当前行中的第一个from,替换成to。如果当前行含有多个 from,则只会替换其中的第一个。 :s/from/to/g
2014-08-28 13:40:28 1475
原创 vim的visual模式
在可视化模式下,我们可以进行各种编辑操作。如d命令可以删除高亮显示的文本,而D命令则会删除一行,即使这一行中只有部分文本是高亮显示的。类似的,y命令将复制高亮显示的文本,而Y命令会复制整行。c命令可以将高亮显示的文本删除并进入编辑模式,而C命令会删除一行文本并进入编辑状态。针对高亮显示的文本块,我们可以用命令~进行大小写转换。用命令>增加缩进,或用命令减少缩进。我们还可以利用可视化
2014-08-28 13:11:29 406
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人