我使用GDBServer在ARM11处理器上进行远程调试。软件断点运行良好,但我们使用"hbreak test.c:5“来设置硬件断点,CPU永远不会停止。
GDB版本: 7.3.1
目标CPU: ARM11
操作:
arm-linux-gdb ./main
(gdb) target remote 192.168.0.1:2345
(gdb) hbreak test.c:5 => HW breakpoint, it doesn't work. but if change to "b test.c:5", it will works
(gdb) c
我有一个C程序,它编写了一个非常复杂的脚本来运行它。我需要使用gdb来调试这个程序。我尝试运行这个脚本并将gdb附加到它的进程中,但是我无法设置我需要的断点:
$ gdb median.o 27944
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free softwa
我正在尝试调试一个应用程序,该应用程序是使用GDB从多个共享库构建的。
启动全球开发银行:
prompt$ gdb
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-50.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redist
如何以编程方式在C或C++代码中设置一个断点,以便在Linux上为gdb工作?
即:
int main(int argc, char** argv)
{
/* set breakpoint here! */
int a = 3;
a++; /* In gdb> print a; expect result to be 3 */
return 0;
}
在问这个问题之前,我参考了以获得添加的上下文
我在linux上运行了一个c++守护多线程程序。它每次处理事务时都会启动一个线程。要调试的代码是在新线程中调用的事务处理代码的一部分。
这是我调试的过程。
我启动gdb,关闭分页,打开同步命令执行并设置不停止模式.
然后,我将gdb附加到运行守护进程程序中,并在“所有”线程上设置断点(参见下图),并发送一个新事务。
问题是gdb会清楚地告诉我断点在线程1中,我在新线程中没有断点。当我发送新事务并退出时,将创建一个新线程,而不会在断点中断。
请帮助我理解可能的原因(我错过了什么)。
(gdb) set pagination off
(gdb) set
我想要获取函数_dl_start (动态链接器的入口点)的地址。我可以使用gdb设置断点。我希望使用readelf找到这个符号,但我没有找到。如何获取地址/ gdb如何解析_dl_start?
使用gdb设置断点的示例源代码(main.cpp)如下
int main( int argc, char** argv, char** envp )
{
return 0;
}
我用以下命令编译了它
g++ main.cpp -o teststart
运行该程序时的gdb输出为
(gdb) b _dl_start
Function "_dl_start" not defined
我已经在某个文件上设置了一个断点:line,因为有多个这样的文件,这导致GDB创建了多个断点。
(gdb) b drv.c:2145
Breakpoint 1 at 0xa8b8172: drv.c:2145. (3 locations)
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y <MULTIPLE>
1.1 y 0x0a8b8172 in soc_property_ci_get_
anisha@linux-dopx:~> g++ -Wall -pedantic breakpoints.cpp -g
anisha@linux-dopx:~> gdb a.out
(gdb) b X::X
Breakpoint 1 at 0x400ac1: file breakpoints.cpp, line 14.
Breakpoint 2 at 0x400aa0: file breakpoints.cpp, line 9.
warning: Multiple breakpoints were set.
Use the "delete" command to d
我正在尝试调试一个在处理请求时派生的进程。
我已经将follow-fork-mode设置为child,允许gdb在命中子对象中的断点时闯入。但是,当我继续从子进程中继续时,父进程就分离了。
很多文档都指向选项detach-on-fork,但是如果我尝试设置这个选项,我会得到:
(gdb) set detach-on-fork on
No symbol "detach" in current context.
该选项的链接清晰可见:
编辑:系统信息
>uname -a
Linux localhost 2.6.9-78.0.22.ELsmp #1 SMP Thu Apr 3
我正在使用两个虚拟机(主机和目标)调试linux内核.通过串口/dev/ttyS0连接。
主机
命令行使用--> <--高亮显示。
--> root@tony-VirtualBox:~/linux# gdb ./vmlinux <--
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/g