解决粘性问题的方法

2024-02-03

当一个软件卡住、对用户输入没有响应并且不更新其显示时,如何准确确定它正在做什么?

我尝试过 oprofile,它记录了正在执行的函数,但它没有给我足够的线索。它会计算运行期间发生的所有事情,而我只需要查看样本程序卡住时发生的情况。

问题可能涉及中断、等待网络套接字、计时器、GUI 事件处理程序或谁知道是什么。如何尽可能多地了解正在发生的事情,而不仅仅是每个线程的执行点?

感兴趣的软件在 Linux 上运行,使用 gcc 构建,主要是 C++,但可能涉及其他语言,包括解释语言,例如Python。

现在特别值得关注的是 Firefox,我已经检查了它的源代码。 Firefox 会随机频繁地暂停所有输入和屏幕输出,每次大约 5-10 秒。即使有人把这个特殊问题的解决方案交给我,我当然会接受,但仍然会问。如果可能的话,我想学习适用于任何软件的通用技术,尤其是我负责的软件。


strace http://en.wikipedia.org/wiki/Strace将追踪系统调用。这可能会给出一些有关网络套接字上阻塞的信息等的指示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决粘性问题的方法 的相关文章

  • valgrind 和 iOS SDK 4.2?

    使用 valgrind 运行 iOS 4 2 应用程序时遇到问题 我从 Macports 安装了 valgrind 3 6 0 SVN Xcode 3 2 5 当我修改 main 以运行 valgrind 时 我得到以下输出 Detecte
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 当我使用nodemon和ts-node时,为什么节点检查器没有启动?

    我有一个用打字稿编写的简单节点服务器 我的 package json 配置为 scripts build tsc dev nodemon watch src e ts json exec ts node src server ts debu
  • 将参数传递给调试器中的 perl 文件并在系统执行的文件中设置断点

    因此 我使用 perl d file pl 在 perl 调试器中运行一个文件 但 file pl 也应该接受参数 如何向 file pl 提供参数 还有一个问题 file pl 中有这一行 system file2 pl 如果 file2
  • 在 Cocoa/Carbon 下调试 NULL CGContext

    在执行程序期间 我在 XCode 调试控制台中得到以下输出
  • 处理 C++ 中执行时间的大量分析

    我目前正在进行一个科学计算项目 涉及海量数据和复杂算法 因此需要进行大量代码分析 我目前依靠的是
  • 如何调试 numpy 掩码

    这个问题与this one https stackoverflow com q 73672739 11004423 我有一个正在尝试矢量化的函数 这是原来的函数 def aspect good angle float planet1 goo
  • Chrome 开发工具:无需切换到“源”选项卡即可进入调试器

    如果我把debugger https developer mozilla org en US docs JavaScript Reference Statements debugger当 Chrome 开发工具打开时 我的 JavaScri
  • :target 伪类在 Firefox 中无法正常工作

    我正在使用 target 伪类制作一个具有 CSS 灯箱类型效果的页面 当您单击图像时 会弹出一个包含信息的框 当您单击任意位置时 该框会再次消失 它在 Chrome 和 IE 中运行良好 但在 Firefox 中存在一个奇怪的错误当您将鼠
  • Visual Studio 2010 调试器不会在断点处停止?

    我在计算机 Windows 7 64 位 上使用 Visual Studio 2010 时遇到问题 我正在为 Outlook 做一个 C 插件 我可以将其添加到 Outlook 上 尝试一下 但无法调试它 因为调试器不会在断点处停止 我在谷
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • Xcode 调试器 - 如何在 CPU 指令级别单步执行

    这绝对是令人着迷的 但我对编译器如何巧妙地将 C 代码转换为机器指令感到着迷 由于我对某些指令有点模糊 因此如果我能够在单个机器指令级别 低于 C 语句级别 可能会生成多个 CPU 指令 观察已编译程序的操作 将会很有帮助 换句话说 我可以
  • UNIX系统调用监视器

    如何监控进程的系统调用 Check strace http linux die net man 1 strace 在最简单的情况下 strace 运行指定的命令直到退出 它拦截并记录进程调用的系统调用以及进程接收的信号 每个系统调用的名称
  • 在 Mac 上使用 Eclipse 进行 C++ 调试器

    当我最终设置我的 mac 来使用 eclipse 后 我无法调试 我尝试通过谷歌寻求帮助 但没有一个答案对我有用 所以 我需要有人帮助我在 eclipse 上安装和使用 c c 调试器 我安装了 Xcode 5 0 感谢您的帮助 Roy 您
  • Visual Studio 加载符号

    我正在研究一个冷聚变 http en wikipedia org wiki ColdFusion项目已经有一段时间了 Visual Studio 至少对我来说开始表现得很奇怪 我观察到 当我开始调试时 它构建了项目 开始部署 部署完成并开始
  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 在远程 Glassfish 上进行日志记录和/或调试

    我有个问题 我在远程 Glassfish 实例上部署了一个 Web 服务 现在我需要一些简单的日志或调试系统来纠正我的代码 使用简单的打印会更好 我的想法是使用 glassfish 日志文件 因为我可以从管理 GUI 访问它 但它不起作用
  • 是否可以在 Java 8 中调试 Lambda

    我刚刚开始使用 Java 8 Lambda 我注意到我无法在 NetBeans IDE 中调试它们 如果我尝试将断点附加到以下代码 我会得到一个变量断点 这绝对不是我想要的 private EventListener myListener
  • StatET调试工具

    我想我只是很密集 但我似乎无法弄清楚如何在 Eclipse 中的 R 中使用调试工具 StatET 插件 有人有关于这个主题的任何提示或教程吗 StatET 2 00 现在对高级 可视化调试提供实验性支持 需要 Eclipse 3 6 或

随机推荐

  • Keras:如何在训练期间在自定义生成器中获取模型预测(或最后一层输出)?

    我制作了一个自定义生成器 在训练期间我需要模型的预测 在针对真实标签进行训练之前对其进行一些计算 因此 我先保存模型 然后调用model predict 就目前的状态而言 from keras models import load mode
  • Python:如何制作具有相同*大小*箱的直方图

    我有一组数据 想制作它的直方图 我需要垃圾箱有相同的size 我的意思是它们必须包含相同数量的对象 而不是更常见的 numpy histogram 问题等距垃圾箱 这自然会以箱宽度为代价 箱宽度通常会不同 我将指定所需的 bin 数量和数据
  • 如何在 SQL Server 2008 中的选择时或之前创建触发器

    USE admin gorace IF EXISTS SELECT name FROM sysobjects WHERE name trScheduler Status Update AND type TR DROP TRIGGER trS
  • fread() c 中的结构

    对于我的作业 我需要使用 fread fwrite 我写 include
  • 将 JavaScript 转换为 Groovy/Java

    我有一些 javascript 代码 Postman 需要转换以便在另一个 API 测试工具 Katalon 中使用 我在更新具有时区差异的日期时遇到错误 尝试使用 TZ 差异更新预期日期时会发生错误 原始 JavaScript Postm
  • 捕获异步 lambda 异常

    我正在 Windows 8 使用 C 上工作 并且在使用时async关键字有一种情况我似乎无法很好地处理异常 该场景涉及启动一个asynclambda 将其发布到 UI 线程上运行 执行 lambda 代码期间发生的异常会在调用线程上重新引
  • 使用 Gradle 自定义 PMD 规则

    我想在使用 gradle 构建的企业项目中使用 gradle PMD 插件 我有一个pmd rules xml文件已经可以工作 但我无法添加自己的java规则 我得到一个类未找到异常 我按照其网站上的教程进行操作 我必须将自己的规则放在哪里
  • for 循环中的 Swift 闭包

    目前我有在循环内执行闭包的代码 我想知道所有闭包何时完成执行 目前 我正在使用一个计数器 并在关闭完成时递增它 然后将其与要执行的次数进行比较 代码如下 var count 0 var noOfTimes 10 for i in 0
  • 鼠标悬停和鼠标悬停有什么区别?

    在flex中 鼠标悬停和鼠标悬停有什么区别 它首先发生鼠标悬停 然后鼠标悬停 然后鼠标移出 然后推出 这些活动什么时候最合适 来自AS3文档 http help adobe com en US FlashPlatform reference
  • 当清单中存在 `android:supportsRtl="false"` 时,如何在运行时更改 ConstraintLayout 的布局方向?

    背景 我的任务是开发一个应用程序android supportsRtl false 在其清单中 不知道为什么要这样设置 但似乎在某些地方用户可以选择方向 此外 在某些情况下它是浮动的 使用系统警报窗口权限 问题 我想要一些 Constrai
  • Android Studio 输出文本始终为“Hello from C++”

    我面临这个奇怪的问题 我创建了一个textview in activity main xml并将文本设置为 android text Oh my god But 无论我输入什么文本 应用程序屏幕中的输出都是 来自 C 的你好 In fact
  • 如何在 Visual Studio 中复制错误消息

    我刚开始使用 C 和 VS 如何复制我的错误消息 在下图中 我想复制 System Net HttpWebRequest 在菜单栏中选择 查看 并启用 错误列表 默认情况下 屏幕底部会弹出包含所有错误的错误列表 并且可以复制消息
  • R6010 abort() 已被调用

    我从这里读到了有关 substr 的内容 http www cplusplus com reference string string substr http www cplusplus com reference string strin
  • 如何让 div 元素垂直固定?

    我想要垂直但不水平固定的 div 元素 目前 我正在使用 jQuery 来更新位置top每次发生滚动时 但我不希望它看到移动 我希望它能固定不动 有没有办法做到这一点 div A div B 向下滚动 div A div B
  • 节点静态示例

    我一直在用头撞墙试图找出这段代码出了什么问题 我直接从node static github存储库示例中复制了它 但它似乎不起作用 我所做的唯一修改是公共文件的路径 以前是 public 在我的公共文件夹中 我有一个index html 但是
  • VSTS - 从发布视图中取消升级软件包版本

    我们的项目当前使用 VSTS Visual Studio Team Services 包在项目之间共享包 我们想采用发布视图 https learn microsoft com en us vsts package feeds views
  • 如何包含“resources”文件夹中的js文件(Laravel 5.5)

    我使用以下代码来包含我的 js 文件 Meta addJs admin js resources assets admin js admin app js 该文件存在 但在控制台中我看到状态 404 如果我将文件移至 公共 文件夹 一切正常
  • 升级 Xampp 以运行 php 7

    在阅读了几个关于如何将 xampp 升级到较新版本的 php 的问题后 我开始将我的版本升级到版本 7 因为我想学习 严格类型提示 我从下载了 php 7官方网站 http windows php net download 我将此下载文件夹
  • CVS:列出标签之间添加/删除的所有文件

    有没有办法列出在两个选定标签之间添加 删除到存储库的所有文件 我尝试了 cvs 历史记录 但它只显示历史记录 因为特定标签最后添加到历史文件中 命令行解决方案会更好 您可以使用cvs rdiff s r
  • 解决粘性问题的方法

    当一个软件卡住 对用户输入没有响应并且不更新其显示时 如何准确确定它正在做什么 我尝试过 oprofile 它记录了正在执行的函数 但它没有给我足够的线索 它会计算运行期间发生的所有事情 而我只需要查看样本程序卡住时发生的情况 问题可能涉及