zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    对象拷贝-深拷贝
    eclipse安装桌面快捷方式
    ajax 分页
    单例模式
    过滤器
    ajax参数详解
    json
    反射
    jdbc02
    jdbc --例子7
  • 原文地址:https://www.cnblogs.com/linyx/p/9891272.html
Copyright © 2011-2022 走看看