Linux下c++常用调试

进程调试

自己写的代码,直接gdb r/bt就可以了。

正在运行的进程,先ps ax找到进程id。然后gdb进入之后attach 进程id。stop/continue暂停和继续进程。

core了,有core文件,就直接gdb core文件。

线程调试

https://stackoverflow.com/questions/7698209/tracing-pthreads-in-linux

strace works for threads as well. Use strace -f to strace all threads.
To strace only a particular thread, you first have to find its tid (thread id). Threads have thread id's that's really a pid (process id)
Once you know the pid of the thread, use strace -p the_pid to strace that thread.

用strace也是可以跟踪线程的,先找到线程id。

1 ls proc/进程id/task/

然后就可以用

1 strace -p 线程id

 也可以用gdb。attch之后,info threads;thread thread_no: 进入线程xx,通常紧接而来的是 bt/f 命令;

http://blog.51cto.com/huangfu3342/1609574

内存泄漏

可以用valgrind

今天还学到一招,可以用pmap -p pid查看内存镜像。然后把内存dump出来。dump内存操作如下:

  1. gdb -p pid,先用gdb挂到运行的进程3。
  2. 再执行gdb的dump命令,dump binary memory 导出文件名 导出内存起始地址 导出内存结束地址。

再根据dump出的内存内容反推是哪里出了问题。

性能分析

用perf加火焰图。

https://www.cnblogs.com/linyx/p/10031195.html

转载于:https://www.cnblogs.com/linyx/p/9891272.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值