Articles of 跟踪

QEMU简单的后台追踪不会打印任何东西

我正在从QEMU获取简单的跟踪文件。 我遵循指示docs / tracing.txt 用这个命令“qemu-system-x86_64 -m 2G -trace events = / tmp / events ../qemu/test.img” 我想只得到简单的跟踪文件。 我有trace-pid文件,但是它没有任何内容。 使用“简单”跟踪后端构build: ./configure –enable-trace-backends =简单make 用你想要跟踪的事件创build一个文件: echo bdrv_aio_readv> / tmp / events echo bdrv_aio_writev >> / tmp / events 运行虚拟机生成一个跟踪文件: qemu -trace events = / tmp / events …#你正常的QEMU调用 漂亮的打印二进制跟踪文件: ./scripts/simpletrace.py trace-events trace- *#用QEMU覆盖* 我遵循这个指示。 请有人给我一些build议这种情况。 谢谢!

stream程执行跟踪工具

我目前正在调查我们的实验室服务器上一个非常奇怪的问题。 每当我们在一台已经使用Citrix访问的64位SUSE SLES11安装的机器上运行一个Java程序时,它就会挂起。 我有机器上的最新更新,但它没有帮助。 如果任何一种情况发生变化,它的工作原理是:32位操作系统,SLES10.2,通过Cygwin / Exceed和其他X应用程序(如xclock)进行访问。 到目前为止,这可能看起来像一个ServerFault的问题,但我实际上正在寻找的是我可以用来跟踪这个软件实际上在做什么的软件的build议。 它挂在“FUTEX_WAIT”(通过使用stracefind): futex(0x7f4e3eaab9e0, FUTEX_WAIT, 19686, NULL 光标停在NULL之后的轨迹中,并且只是无限期地停留在那里。 我发现以前的一个错误报告看起来有点类似于这个问题,但是情况有很大不同。 更新:显然,futex_wait问题是在内核/ libclocking进程中的奇怪的竞态条件的迹象。 我将不得不尝试一个新的内核/ libc,看看是否有任何区别。 UPDATE2:内核/ libc的更改没有什么区别。 设法启动jvisualvm并将其挂在一个可预测的外部JMX端口上,并连接到另一台机器上,在这一点上,我在主线程的线程追踪中find了这个: Name: main State: RUNNABLE Total blocked: 0 Total waited: 0 Stack trace: sun.awt.X11GraphicsDevice.getDoubleBufferVisuals(Native Method) sun.awt.X11GraphicsDevice.makeDefaultConfiguration(X11GraphicsDevice.java:208) sun.awt.X11GraphicsDevice.getDefaultConfiguration(X11GraphicsDevice.java:182) – locked java.lang.Object@1c190c99 sun.awt.X11.XToolkit.<clinit>(XToolkit.java:92) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Class.java:169) java.awt.Toolkit$2.run(Toolkit.java:834) java.security.AccessController.doPrivileged(Native Method) java.awt.Toolkit.getDefaultToolkit(Toolkit.java:826) – locked java.lang.Class@308a1f38 org.openide.util.ImageUtilities.ensureLoaded(ImageUtilities.java:519) org.openide.util.ImageUtilities.access$200(ImageUtilities.java:80) org.openide.util.ImageUtilities$ToolTipImage.createNew(ImageUtilities.java:699) […]

Linux:如何debuggingSIGSEGV? 如何跟踪错误来源?

我的Firefox从今天开始崩溃。 我没有改变任何系统或Firefox上的configuration。 我用 strace -ff -o dumpfile.txt firefox 追查问题。 这不是一个很大的帮助。 我在两个生成的过程转储中看到了段错误,但是我怎么能跟踪他们的原因? 运行10秒后崩溃,通过strace生成22MB的数据。 这是输出的一个片段,你可以在其中看到实际的SIGSEGV。 阅读(19,“\ 372”,1)= 1 gettimeofday({1245590019,542231},NULL)= 0 (3,“\ 6 \ 0 [Qmy \ 26 \ 0 \ 3 \ 1 \ 0 \ 0Y \ 0 \ 200 \ 2 \ 0 \ 0 \ 0 \ 0 \ 323 \ 3A \ 0 […]

跟踪线程调度

我想要做的是创build一些graphics,详细描述Linux中(两个)线程的执行情况。 我不需要看看线程在做什么,只是在计划时间和时间长短的基础上。 我花了几个小时在互联网上寻找一种方法来跟踪pthreads的调度。 不幸的是,我发现的两个项目需要内核重新编译( LTTng )或glibc修补(NPTL跟踪工具) ,这两者我都做不到(我没有sudo权限的大型集中pipe理系统)。 有没有其他的方式来做这样的事情,或者我将不得不求助于find一台笔记本电脑,我可以补丁/重新编译任何我想要的? 最好的祝福 PS:我会链接到这两个项目,但该网站不允许我(声望<10)。 谷歌的项目名称上的第一个search结果是正确的。

分析(可能是I / O绑定)进程以减less延迟

我想在一个更大的应用程序中改进特定方法的性能。 目标是提高延迟(在特定function中花费的挂钟时间),而不是(必须)系统负载。 要求: 正如我所预料的那样,由于I / O造成了很多延迟,所以要考虑等待/阻塞所花费的时间(换句话说,看看挂钟时间而不是CPU时间) 由于该程序比我想优化的片段要多得多。 需要有一种方法来以编程方式启动/停止分析,或筛选输出以仅显示进入和退出我正在优化的function之间的时间。 对方法级别进行分析是可以接受的(如果可以在指令级别上完成的话,甚至更好,如果只是对系统调用进行configuration,那可能是不够的) 这是一个爱好项目,所以昂贵的工具不是一个真正的select 仪表(-finstrument-functions)是可以接受的 我感兴趣的关键代码很难手工中断(因为它已经相对较快,很难实际地在一个循环中调用),所以需要某种自动化。 目前丢弃的工具: gprof,oprofile,callgrind(要求1) 使用getrusage构build自定义的东西(需求1) poormansprofiler.org(要求2) strace -T,dtrace, http://perf.wiki.kernel.org (要求2和3) VTune,缩放(要求4) 手动调用堆栈抽样(要求6) 谷歌perftools(应该能够测量墙的时间,但这似乎并没有在我的情况下工作,大概是因为SIGALRM的干扰。 systemtap(我的内核不打补丁包括utrace) 其他选项,我还没有进一步评估: cprof(这里不是开箱即用的,似乎只有i386) 手动插入跟踪点(例如用lttng) 我很想听听: 其他选项 也许我过早放弃了一些工具? 我还没有评估的选项是否有工作的机会,如果是的话,如何做到最好。 我终于解决了: build立自定义使用函数 – 函数我自己,基于http://balau82.wordpress.com/2010/10/06/trace-and-profile-function-calls-with-gcc/ 这个粗糙的工具产生的痕迹很难解释,我可以很容易地想象一些工具来进一步处理它的输出,使它更有用。 不过,现在这个工作已经完成了,所以我把这个项目放到了后面)。

如何在Linux中跟踪每个文件的IO操作?

我需要跟踪read特定文件的系统调用,而我目前正在通过parsingstrace的输出来做到这一点。 由于read操作文件描述符,我必须跟踪fd和path之间的当前映射。 另外,必须监视seek以保持跟踪中当前位置的最新状态。 在Linux中有更好的方法来获得每个应用程序,每个文件path的IO跟踪吗?

Flash中的跟踪输出在Firefox,Linux

我正在开发一个我在Linux桌面上的服务器上运行的应用程序。 由于Flash在Linux上的缺点(阅读:太难了),我正在开发应用程序的(小)闪光部分在Windows中,这意味着有很多挫折来回。 现在我试图使用闪光灯捕捉闪光部分的输出,这也是非常困难的。 有没有其他的方式可以监控linux上trace的输出? 谢谢…

有没有比使用backtrace()更便宜的方法来find调用堆栈的深度?

我的日志logging代码使用backtrace()的返回值来确定当前的堆栈深度(用于漂亮的打印目的),但从分析中可以看出这是一个相当昂贵的调用。 我不认为有这样做的更便宜的方法? 请注意,我不关心帧地址,只是其中有多less。 编辑:这些日志loggingfunction遍布大型代码库,所以手动跟踪堆栈深度并不是一个真正的select。

C# – 如何访问WLAN信号强度和其他?

许多科学家已经发表论文logging如何通过WLAN连接的设备可以通过测量其信号强度,到达时间,往返时间等来跟踪。任何想法如何使用任何.NET API在Windows中访问这些值? 或者您是否知道可用于位置跟踪的软件SDK?

是否有可能跟踪进程之间的PostMessage?

我们有一个系统,通常有两个进程在同一个系统上运行。 一个进程处理的GUI和其他运行像服务(虽然由于历史原因,这不是一个服务,只是一个exe没有可见的窗口)。 这两个进程主要通过注册消息asynchronous进行IPC – 即我们在两个进程中使用RegisterWindowMessage()来定义一组大量消息,这些消息有效地形成了API到服务器进程。 我编写了一个“免提”监视应用程序,使用SetWindowsHookEx()来监视和显示两个进程的消息队列,并提供API的使用方式以及如何将通知传播到GUI进程的某种级别的解码(每个窗口可以直接订阅来自服务器的通知)。 所以,在两个方向都有大量的消息,所以我有过滤和总结计数等,所以我可以专注于特定的活动。 所有这些都可以在不影响实时代码的情况下完成,这很好。 这一切运行良好,但是现在能够“标记”源自GUI的消息是非常有用的,所以我可以在服务器处理它时跟踪相同的消息。 这对于debugging和诊断系统问题将是非常有用的,但是我不能find一个干净的方式(实际上我找不到任何方法!),而不用为我们的注册消息API添加这样的支持,这将是很多而且涉及到的风险远远超过了我现在所熟悉的风险。 由于服务器预先处理了一些消息,然后执行PostMessage()来执行操作,所以原始消息可能会“丢失”,这变得更加复杂了。 有没有人在这里解决这类问题? 如果是这样,你可以给我一些指针? 如果没有,那么是否有任何logging或没有logging的方法来将一小块数据添加到Windows消息并稍后检索? 我看了SetMessageExtraInfo()但似乎是每队列,而不是每个消息。