草庐IT

DEBUGGING

全部标签

linux - 禁止在 x86/x86_64 上进行未对齐的内存访问

我想在x86/x86_64上模拟禁止未对齐内存访问的系统。是否有一些调试工具或特殊模式可以执行此操作?在使用为SPARC或其他类似CPU设计的软件(C/C++)时,我想在几台x86/x86_64PC上运行许多(CPU密集型)测试。但是我对Sparc的访问是有限的。据我所知,Sparc总是检查内存读取和写入的对齐是否自然(从任何地址读取一个字节,但仅本地址可被4整除时才允许读取4字节的字)。可能是Valgrind或PIN有这样的模式?还是编译器的特殊模式?我正在搜索Linux非商业工具,但也允许使用Windows工具。或者EFLAGS中可能有secretCPU标志?

linux - 如何使 gdb tui 窗口变大

我在tui模式下使用gdb调试我的应用程序。当我开始调试session时,主窗口被分成两个大小相等的部分。带有源代码的窗口(上侧)我可以调用gdb命令的窗口(下侧)这两个窗口的大小完全相同。有什么方法或组合键可以使源代码窗口比其他窗口大吗?有什么办法让它变大吗? 最佳答案 见gdbmanualforTUIcommands.您基本上需要发出类似:winheightSRC+5(增加某些列)或winheightSRC20(设置绝对值) 关于linux-如何使gdbtui窗口变大,我们在Stac

linux - 如何使 gdb tui 窗口变大

我在tui模式下使用gdb调试我的应用程序。当我开始调试session时,主窗口被分成两个大小相等的部分。带有源代码的窗口(上侧)我可以调用gdb命令的窗口(下侧)这两个窗口的大小完全相同。有什么方法或组合键可以使源代码窗口比其他窗口大吗?有什么办法让它变大吗? 最佳答案 见gdbmanualforTUIcommands.您基本上需要发出类似:winheightSRC+5(增加某些列)或winheightSRC20(设置绝对值) 关于linux-如何使gdbtui窗口变大,我们在Stac

linux - 为什么 Linux 内核的 pr_debug 没有给出任何输出?

我有一个可加载的内核模块,它的初始化如下所示staticint__initid_init(void){structidentity*temp;/*somecodewhichisnotrelevanttothequestion*/temp=identity_find(3);pr_debug("id3=%s\n",temp->name);temp=identity_find(42);if(temp==NULL)pr_debug("id42notfound\n");/*somecodewhichisnotrelevanttothequestion*/return0;}此外,我还在我使用的内核

linux - 为什么 Linux 内核的 pr_debug 没有给出任何输出?

我有一个可加载的内核模块,它的初始化如下所示staticint__initid_init(void){structidentity*temp;/*somecodewhichisnotrelevanttothequestion*/temp=identity_find(3);pr_debug("id3=%s\n",temp->name);temp=identity_find(42);if(temp==NULL)pr_debug("id42notfound\n");/*somecodewhichisnotrelevanttothequestion*/return0;}此外,我还在我使用的内核

linux - 如何在 Eclipse 中使用 GDB 进行 C/C++ 调试?

我是VisualStudio用户,习惯于使用断点进行调试。我现在在linux环境中工作,并使用Eclipse作为IDE。我是linux和eclipse的新手。我不知道如何在Eclipse中使用gdb。我尝试在命令行中使用gdb,但并不像拥有UI那样容易。如何在eclipse中使用gdb? 最佳答案 以下说明适用于Eclipse3.5(Galileo)。对于3.6(Helios),除了步骤2中的链接外,它们是相似的。转到“帮助”>“安装新软件”。添加CDT存储库http://download.eclipse.org/tools/cdt

linux - 如何在 Eclipse 中使用 GDB 进行 C/C++ 调试?

我是VisualStudio用户,习惯于使用断点进行调试。我现在在linux环境中工作,并使用Eclipse作为IDE。我是linux和eclipse的新手。我不知道如何在Eclipse中使用gdb。我尝试在命令行中使用gdb,但并不像拥有UI那样容易。如何在eclipse中使用gdb? 最佳答案 以下说明适用于Eclipse3.5(Galileo)。对于3.6(Helios),除了步骤2中的链接外,它们是相似的。转到“帮助”>“安装新软件”。添加CDT存储库http://download.eclipse.org/tools/cdt

linux - 如何访问 .gdbinit 内部和 gdb 内部的环境变量?

我希望在使用gdb调试时设置源代码的路径。我选择使用.gdbinit文件来执行此操作。基本上,它包含一个命令:directory="/path/to/src".但是,我希望能够将该命令指定为:directory="$SOURCESROOT/src"其中SOURCESROOT是一个环境变量。并且,如果可能的话,也可以通过输入directory=$SOURCESROOT/folder在gdb调试session中执行此操作。基本上,我希望在gdb内部(或.gdbinit内部)访问环境变量。但不是被调试者的环境(设置env等),而是gdb本身的环境(即我首先在bash提示符下键入“gdb程序”

linux - 如何访问 .gdbinit 内部和 gdb 内部的环境变量?

我希望在使用gdb调试时设置源代码的路径。我选择使用.gdbinit文件来执行此操作。基本上,它包含一个命令:directory="/path/to/src".但是,我希望能够将该命令指定为:directory="$SOURCESROOT/src"其中SOURCESROOT是一个环境变量。并且,如果可能的话,也可以通过输入directory=$SOURCESROOT/folder在gdb调试session中执行此操作。基本上,我希望在gdb内部(或.gdbinit内部)访问环境变量。但不是被调试者的环境(设置env等),而是gdb本身的环境(即我首先在bash提示符下键入“gdb程序”

linux - 在 x86 Linux 上调试 SIGBUS

什么会导致Linux中的通用x86用户态应用程序出现SIGBUS(总线错误)?我在网上找到的所有讨论都是关于内存对齐错误的,据我所知,这并不真正适用于x86。(我的代码在Geode上运行,以防那里有任何相关的特定于处理器的怪癖。) 最佳答案 SIGBUS在Linux中发生的原因有很多,而不是内存对齐错误-例如,如果您尝试访问映射结束之外的mmap区域文件。您是否正在使用类似mmap、共享内存区域或类似的东西? 关于linux-在x86Linux上调试SIGBUS,我们在StackOver