调试专题提供调试的最新资讯内容,帮你更好的了解调试。
我有一个bash脚本,需要将近5秒钟才能运行.我想调试它,并确定哪些命令花费的时间最长.这样做的最佳方式是什么?我可以设置一个标志吗?设置#!/ bin / bash -vx并没有什么帮助.我想要的基本上是按行号执行时间. 这是尽可能接近内置bash调试工具的答案,因为它从脚本执行开始时间提供了整体时序信息. 在脚本的顶部添加此项以进行第二次计数: export PS4='+[${SECONDS}
我在目标和CodeSourcery IDE上使用gdbserver.我的硬件是带有omap3530的gumstix. 我可以在我的主应用程序中单步执行代码,但如果我尝试进入共享库中的函数,我将获得内存地址并终止调试器. 这是我的库,它被编译并复制到目标系统上的/ lib文件夹.(它有调试符号)我试图使用.gbdinit文件来设置solib-absolute-prefix / lib 以下是gdb跟
我正在将一个项目从 Linux交叉编译为目标Windows(使用mingw).输出是一个DLL,p调用它从C#的工作,但调试是非常困难的.构建输出一个.o文件,它可以为gdb提供符号,但基本上我可以做的是异常中断,并找到异常发生时执行的函数的名称;甚至没有完整的堆栈跟踪.我无法使用WinDbg进行调试,因为我没有.pdb文件. 这是一个在Linux上构建的开源项目;我相信他们的构建过程依赖于几个安
不加载VDSO.so是您在使用gdb和glibc> 2.2时遇到的着名错误之一. 我发现计划在gdb 7.5.1中修复,但不是. 好吧,我在这里找到了一个解决方案 Here,但是我并不明白,所以如何应用它. 操作系统:Arch Linux IDE:QT创建者3.0.82 编译器:GCC 4.8.2 注意:我不知道我是否违反了包括上述链接在内的规则 Not loading VDSO.so is on
在反汇编和调试器IDA中,有没有办法用命令行参数运行当前加载的二进制文件?例如,假设我有命令/ bin / ls并希望将其调试为/ bin / ls test.txt,我怎么能在IDA中执行此操作? 转到Debugger / Process options …菜单项并填写Parameters字段中的test.txt参数. 可执行文件的路径(包括二进制文件)将位于“应用程序”字段中.
我很好奇为什么gdb不显示x86的控制寄存器.我一直在使用gdb和qemu来调试一些内核.我使用info寄存器和info all-registers获取寄存器值. 但是,我不能得到cr3和cr2.(一般CRs).有没有办法让他们.如果没有,那么为什么不提供它们. -谢谢 如果你正在使用qemu,你可以通过在启动qemu的 shell中发出这两个命令来获取所有寄存器状态(甚至是控制状态): > ct
我对开箱即用的答案,方法和想法很感兴趣.在较高的层次上,主页面非常稀疏,它们主要列出-g,有一个级别,这表明-O0也非常有用或必不可少. 但是我想知道可以给出哪些其他的clang标志来进行最大程度的调试.有没有相当于gcc的-ggdb3,其中包含一些直接在对象输出中的源或注释?或者可以吗?是否有可能并且有助于重新编译操作系统及其原始库以进行调试(如果是的话,如果我使用的是Debian,我是否可以将
我的firefox从今天开始崩溃.我没有在系统或firefox配置上更改任何内容. 我用 strace -ff -o dumpfile.txt firefox 追踪问题.这不是一个很大的帮助. 我在两个生成的进程转储中看到了segfault, 但我如何能够追溯他们的原因呢? 运行10秒后崩溃, strace生成22MB的数据. 这是输出的片段,您可以在中间看到实际的SIGSEGV: read(1
在我的公司,我们的链接器(ld 2.17)有一个非常烦人的问题.它在一个相对较快的系统(Core Duo,2GB Ram)上链接非常慢,我现在不知道如何解决这个问题.编译一个相对较大的项目大约需要5到10分钟(在我的Gentoo系统上链接大约需要5秒钟). 我个人认为这是一个巨大的生产力杀手,至少对我而言.我们尝试使用更新版本的ld(2.19)但没有任何成功.我在#freenode的#debian
你怎么经常解决这个问题?想象一下,线程在Computer1上的libc代码(这是一个系统共享库)内崩溃,然后生成一个coredump.但是,将分析此coredump的Computer2可能具有不同版本的libc. 所以: >在远程计算机上拥有相同的共享库有多重要? gdb会在Conputer2上没有完全相同版本的libc的情况下正确重建stacktrace吗? >为libc提供正确的调试符号有多重
问题:总是在Qt Creator 2.8.1 for Linux中选择调试或发布的地方评估CONFIG(调试,调试|发布)和CONFIG(发布,发布|发布). 我在Qt Creator应用程序中的配置(库存 – 新项目的默认值): Projects->Build Settings->Debug Build Steps: qmake build configuration: Debug Ef
我编写了一个 Linux内核模块,作为基于Freescale P2020RDB的定制板的FPGA驱动程序.驱动程序包含几个#defines来指定各种地址,大小,总线宽度等.我想从驱动程序中访问板的扁平化设备树(FDT)来配置这些地址,因此驱动程序可用于其他板,FPGA具有不同的大小或驻留在不同的地址. 我在模块的初始化函数中添加了以下简单代码,这是我在浏览Linux内核源代码树时找到的代码: ..
我想在我的自定义 Linux发行版上调试pthreads,但我遗漏了一些东西.我的主机是Ubuntu 12.04,我的目标是使用crosstool-NG交叉编译工具集构建的i486自定义嵌入式Linux,其余操作系统由Buildroot制作. 我会列出事实: >我可以在目标上运行多线程应用程序 > Google Breakpad在目标上运行多线程应用程序时无法创建崩溃报告.当我在主机上运行时,具有
在ARM的内核oops中跟踪日志打印在内核日志中 – <1>[ 4205.112835] I[0:swapper/0:0] [c0] Unable to handle kernel paging request at virtual address ff898580 <1>[ 4205.112874] I[0:swapper/0:0] [c0] pgd = ec3c4000 <1>[ 4205
我有一个关于在 Linux中调试正在运行的C程序的问题.如果编程已经在运行且无法中断,那么该怎么做. 我可以找到三种方法,但我对细节知之甚少,如果任何人能够更深入地阐述它,我将不胜感激. 1)我们可以通过指定进程ID来使用GDB gdb -p PID 在这种情况下,这个和附加PID有什么区别? 2)我们可以使用pstat,但是,我使用的是Ubuntu,没有pstat,只有mpstat 似乎mpst
我想以某种方式“监视” Linux内核中的变量(或内存地址)(确切地说是内核模块/驱动程序);并找出改变它的原因 – 基本上,当变量改变时打印出堆栈跟踪. 例如,在this answer年末列出的内核模块testjiffy-hr.c中,我想在每次runco​​unt变量更改时打印出堆栈跟踪;希望堆栈跟踪然后会提到testjiffy_timer_function,这确实是改变该变量的函数. 现在,我
试图调试GTK主题,我修改了.纠正了主题的大部分问题后,我仍然无法弄清楚,在某些输入字段或文本视图中,背景颜色的颜色设置是什么. 建立 我可以使用Gtk3应用程序启动GtkInspector以及gtkparasite(按照给定页面上的说明启动那些调试程序). 我敢肯定,调试器附加到正确的应用程序,因为我可以 >改变节目的主题 >显示图形更新 >显示像素缓存… 问题 在左侧选择窗格(预期的widge
我有一些编译库,即x86 Linux上的共享库(即* .so),我想快速确定它们是否使用调试符号编译(即使用选项-g / debug build). 怎么检查? 您可以使用 file命令查看文件是否被剥离.基本上,这意味着调试符号是否存在. 这是我系统中的一个文件: $file libjsd.so libjsd.so: ELF 32-bit LSB shared object, \
目前,我正在使用C语言中的 Linux(2.6内核)中的FUSE文件系统模块开发应用程序.由于某些编程错误,应用程序在安装文件系统后崩溃.因为我是Linux / C环境中的新手开发人员.你能让我告诉我可能的选项来调试这样的程序吗? 首先,确保您正在使用调试符号进行编译(-g选项为gcc).运行程序之前,请使用shell命令启用内核转储: ulimit -c unlimited 然后当应用程序崩溃时
我有一个不是使用调试符号构建的可执行文件的核心转储. 我可以恢复argv内容,看看命令行是什么? 如果我运行gdb,我可以看到一个回溯,我可以导航到main()框架.有一次,有没有办法恢复argv,而不知道它的确切地址? 我在x86_x64(Intel Xeon CPU)上运行一个CEntOS Linux发行版/内核, 我有希望的一个原因是核心转储似乎显示了部分争议. (程序是postgres,当