首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux后台开发常用调试工具

ldd(显示程序需要使用的动态库和实际使用的动态库) # ldd /bin/ls linux-gate.so.1 => (0xbfffe000) librt.so.1...libc.so.6 (0xb7dc3000) libpthread.so.0 => /lib/libpthread.so.0 (0xb7dab000) /lib/ld-linux.so...opannotate -s test : 以代码的角度,针对test进程显示检测结果 opannotate -s /lib64/libc-2.4.so : 以代码的角度,针对libc-2.4.so库显示检测结果 linux...valgrind会影响进程性能,据说可能慢20倍,所以在性能要求高的情况下,只能使用mtrace这种轻量级的工具了(但是mtrace只能识别简单的内存错误)。...mtrace(检查内存错误) mtrace是glibc內提供的工具,原理很简单,就是把你程序中malloc()和free()的位置全部下來,最后两辆配对,沒有配对到的就是memory leak。

3.8K151

分布式会话跟踪系统架构设计与实践

简介 MTrace,美团点评内部的分布式会话跟踪系统,其核心理念就是调用链:通过一个全局的ID将分布在各个服务节点上的同一次请求串联起来,还原原有的调用关系、追踪系统问题、分析调用数据、统计系统指标。...我们都知道跨部门之间的沟通成本很高的,这么找下去会花费大量的不必要时间,而有了MTrace之后,你只需要点开链路就能发现超时问题的瓶颈所在。 优化链路 ?...异常log绑定 通过MTrace不仅能做上述这些事情,通过它的特性,还能携带很多业务感兴趣的数据。因为MTrace可以做到数据和一次请求的绑定以及数据在一次请求的网络中传递。...而通过MTrace就可以将请求的参数、异常log等信息通过traceId进行绑定,很容易地就把这些信息聚合到了一起,方便业务端查询问题。...其次,为了整个框架的统一,MTrace并非仅支持Java一种语言,而AOP的特性很多语言是不支持的。

1.5K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    微服务拆分过细?“卫星”系统帮你做日志收集无遗漏

    为了解决这个问题,基础架构的同学提供了MTrace(详情可以参考技术博客:《分布式会话跟踪系统架构设计与实践》)协助业务方排查长链路问题。...所以我们制定了这样的采集策略: 通过在链路入口服务判断发起人是否满足特定人群(住宿事业部员工)来决定是否进行日志采集,将采集标志通过MTrace进行全链路传递。...我们的系统核心数据有链路与日志,链路信息的获取是通过MTrace服务获得,但是MTrace服务对链路数据的保存时间有限,无法满足我们的需求。...所以,我们通过延时队列从MTrace获取近期的链路信息进行落地存储,这样就实现了数据的闭环,保证了数据完整性。...为了解决这个问题,MTrace提供了Mtrace Hystrix Support Plugin插件实现跨线程调用时的线程变量传递,但是由于Hystrix有专门的timer线程池来进行超时fallback

    1.1K70

    Linux调试工具

    mtracelinux下开发应用程序,用C/C++语言的居多。内存泄露和内存越界等内存错误,无疑是其中最头疼的问题之一。glibc为解决内存错误提供了两种方案: 一种是hook内存管理函数。...另外一种方法更简单,glibc已经为第一种方案提供了默认的实现,你要做的只是在特定的位置调用mtrace/muntrace两个函数,它们的函数原型如下: #include void mtrace(void); void muntrace(void); 你可能会问,在哪里调这两种函数最好?...对于小程序来说,在进入main时调用mtrace,在退出main函数时调用muntrace。对于大型软件,这样做可能会记录过多的信息,分析这些记录会比较慢,这时可以在你所怀疑代码的两端调用。...程序运行完毕后,使用mtrace工具分析这些内存分配历史信息,可以查出内存错误的位置(mtrace在glibc-utils软件包里)。 2.

    9.8K43

    JVM堆引发swap的情况分析

    linux中物理内存是linux的主要内存区域,当物理内存不够时,linux会把一部分暂时不使用的内存数据放到磁盘swap区去,以便腾出更多可用内存空间。...对于linux系统而言,其只可以运行可执行的二进制代码,jvm进程本身是一个C语言开发的进程,因此其在使用虚拟内存时和其他普通的linux进程一样。...虚拟内存用户内存部分分成以下几部分: 代码区,linux进程的代码 数据区,linux进程的全局或者静态数据等 堆区,运行时数据动态申请的空间,程序运行时直接申请/释放的内存资源 栈区,存放函数的入参,...1 nioEventLoopGroup 1 New I/O server boss 1 New I/O boss 1 mtthrift 1 mtrace...pollingConfigurationSource 1 org.eclipse.jetty.util.RolloverFileOutputStream 1 mtthrift 1 mtrace

    3.7K60

    Node.js内存泄漏分析

    Inspector的debug界面,大家可以看下这篇博文,其中就是介绍如何应用该工具来检测内存泄漏 http://www.cnblogs.com/ldlchina/p/4762036.html node-mtrace...,它使用了GCC的mtrace工具来分析堆的使用。...https://github.com/Jimbly/node-mtrace 但是该工具提供的是点对点的,如果存在异步函数的话,会比较麻烦,这种可以结合其他工具一起使用会比较方便,大家可以看下github...如果你是在Linux的话,可以首先通过命令查看该进程ID,然后再使用top -p 进程ID ps -ef | grep node top -p 12202 随时的查看进程所占用的内存,通过访问你会看到其内存的变化情况...127.0.0.1:1337进行压测,当压测到一定的情况后,在运行窗口你可以看的其内存泄漏的提醒,并在这时候会在file这个目录文件中(如果在windows中最好就修改下file这个文件路径,这里的示例代码是相对Linux

    2.3K40
    领券