Questions tagged «debugging»

是发现并减少计算机程序中的错误或缺陷数量的过程,从而使其表现出预期的效果

8
如何调试bash脚本?
我在bash中的某些脚本中遇到一些有关错误和意外行为的问题。我想调查问题的原因,以便我可以应用修复程序。有没有办法让bash变成某种“调试模式”,以获得更多信息?
135 bash  debugging 


3
Linux网络故障排除和调试
Linux和Unix用户有时会遇到各种网络问题。这些问题中的许多问题在此处和其他一些故障排除论坛中都有介绍,但它们非常具体,并且包含许多其他技术信息,有时很难理解错误的系统行为的要点和真正原因。 通过问这个问题,我的目的是启动一个社区Wiki页面,该页面可以概括我们的网络故障排除和调试经验。我希望Linux和Unix用户可以使用此页面更轻松地识别和解决(“分而治之”)他们的网络问题。 此页面的父级应该是 诊断问题的最佳实践。但在这里我们要着重故障诊断网络问题,从用户和内核空间。 我想,如果您: 与它们一起帮助捕获的具体用法示例和网络错误示例共享有关使用一些出色的网络诊断工具的信息。 分享与该主题相关的出色网络教程的链接 介绍可以解决某些网络问题的通用方法或方法 共享有关您的工具集的信息以进行网络调试和故障排除 它完全适合该主题。 我将从共享varios 诊断工具的链接和12岁的简单教程开始。同样,archlinux教程似乎也有关于我们主题的实际信息。为了深入研究Linux网络,我们绝对需要访问Linux Networking-HOWTO。

4
git pull是怎么吃我的作业的?
我感觉像是校长办公室里的一个孩子,解释那只狗在到期前一天晚上吃了我的作业,但是我盯着脸上的一些疯狂的数据丢失错误,我不知道它是怎么发生的。我想知道git如何吃掉我的整个仓库!我已经把git穿过绞拧器很多次了,而且从未眨眼。我用它来将20 Gig Subversion存储库拆分为27个git存储库,并过滤掉其中的foo以解开混乱,而且它从未对我造成任何损失。reflog总是在那里回落。这次地毯不见了! 从我的角度来看,我所做的只是运行,git pull并且它破坏了我的整个本地存储库。我不是说它“搞乱了已签出的版本”或“我所在的分支”或类似的名称。我的意思是整个事情都没了。 这是事件发生时我的终端的屏幕截图: 让我来指导您。我的命令提示符包含有关当前git repo的数据(使用prezto的vcs_info实现),因此您可以查看git repo何时消失。第一个命令足够正常: » caleb » jaguar » ~/p/w/incil.info » ◼  zend ★ » ❯❯❯ git co master Switched to branch 'master' Your branch is up-to-date with 'origin/master'. 在那里,您可以看到我在“ zend”分支上,并检出了master。到现在为止还挺好。您将在下一条命令之前的提示中看到它已成功切换分支: » caleb » jaguar » ~/p/w/incil.info » ◼  master ★ » ❯❯❯ …


4
如何知道程序在linux中卡在哪里?
我在ubuntu服务器上运行以下命令 root@slot13:~# lxc-stop --name pavan --logfile=test1.txt --logpriority=trace 它似乎无限期地挂起。每当在AIX上发生这种情况时,我都只是简单地获取有问题的进程的PID,然后说 $ procstack <pid_of_stuck_process> 它用来显示整个过程的调用堆栈。procstack在linux / ubuntu中有什么等效的东西吗?

2
如何通过GDB进入,过渡和退出?
我help在GDB时打过字,但没有发现任何有关跨入,跨入和跨出的信息。我在_start(break _start)中的Assembly程序中放置了一个断点。之后,我输入next并完成调试。我想那是因为它完成了_start,没有按照我的意愿介入。 有人可以帮忙吗?


3
我如何看到在某些bash实例中正在执行的确切命令行?
我有一个运行时间很长的bash实例(在screen会话中),该实例在一个循环内执行一组复杂的命令(每个循环执行管道,重定向等)。 长命令行是在终端内部编写的-不在任何脚本中。现在,我知道bash进程ID,并且我具有root用户访问权限-如何查看在其中执行的确切命令行bash? 例 bash$ echo $$ 1234 bash$ while true ; do \ someThing | somethingElse 2>/foo/bar | \ yetAnother ; sleep 600 ; done 在另一个Shell实例中,我想查看在PID 1234中执行的命令行: bash$ echo $$ 5678 bash$ su - sh# cd /proc/1234 sh# # Do something here that will display the string \ 'while true …


4
内核黑客环境
我一直在嵌入式操作系统中工作,例如uCOS,ThreadX。虽然我已经在Linux中编写了应用程序代码,但是现在我计划开始学习Linux内核。我对环境的问题很少。 哪个是最好的发行版,哪个具有易于使用的内核开发工具?(到目前为止,我已经使用过RHEL和Fedora。虽然我对它们感到满意,但看起来Ubuntu内置了用于轻松进行内核编译的脚本,例如make_kpkg,等等) 您能描述内核调试的最佳设置吗?在调试其他嵌入式OS时,我已使用串行端口转储进度,JTAG等。Linux内核开发人员使用哪种设置?(我的带有串行端口的测试台PC足以满足我的需求吗?如果是,如何配置内核以转储到串行端口?)我正计划将内核消息重定向到将在笔记本电脑中读取的串行控制台。 哪种工具最适合调试和跟踪内核代码?如前所述,串行控制台是唯一的方法吗?或PC是否存在任何IDE / JTAG接口?


2
如何找出正在写入STDOUT的进程?
我有两个正在运行的流程实例。其中之一就是“可惜!” 和打印错误不会停止到STDOUT。 我想杀死破裂的过程,但是我必须确保不要终止错误的过程。它们都是在大约同一时间启动的,使用top它们,我可以看到它们都使用了大约相同数量的内存和CPU。我似乎找不到任何指向哪个进程表现不佳的信息。 最安全的事情是弄清楚哪个进程/ pid正在写入STDOUT。 有什么办法吗?


3
如何在不优化的情况下使用CMake进行编译-O0
我正在使用Scientific Linux(SL)。我正在尝试编译使用一堆C ++(.cpp)文件的项目。 在目录中user/project/Build,我输入make以编译和链接所有.cpp文件。然后我必须去user/run/然后输入./run.sh values.txt 要使用GDB进行调试,我必须转到user/run,然后键入gdb ../project/Build/bin/Project并运行,输入run -Project INPUT/inputfile.txt。但是,我试图使用打印输出变量的值p variablename。 但是,我收到消息s1 = <value optimized out>。我已经在网上进行了一些研究,似乎我需要在不进行优化的情况下进行编译-O0以解决此问题。但是我应该在哪里输入呢?在CMakeLists?如果是这样,哪个CMakeLists?一个project/Build或project/src/project?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.