gdb断点设置到链接的cpp里某一行
时间: 2023-12-07 14:06:10 浏览: 48
如果你想要在 gdb 中设置断点到链接的 `.cpp` 文件里的某一行,可以使用以下步骤:
1. 使用 `info shared` 命令查看程序链接的 `.so` 文件或 `.a` 文件的路径,找到需要设置断点的 `.cpp` 文件所在的库文件。
2. 使用 `info sources` 命令查看源代码的路径,找到需要设置断点的 `.cpp` 文件在源代码中的位置。
3. 使用 `set substitute-path` 命令将库文件中的路径替换为源代码中的路径。例如,假设程序链接的库文件路径为 `/usr/local/lib/libexample.so`,源代码路径为 `/home/user/example.cpp`,则可以使用以下命令进行替换:
```
set substitute-path /usr/local/lib /home/user
```
4. 使用 `b file.cpp:line` 命令设置断点。在这个命令中,`file.cpp` 是源代码文件名,`line` 是需要设置断点的行号。例如,如果需要在 `example.cpp` 文件的第 10 行设置断点,可以使用以下命令:
```
b example.cpp:10
```
设置好断点以后,可以使用 `run` 命令运行程序,并等待程序执行到断点处。在程序执行到断点处时,gdb 会自动停止运行,等待你输入下一步指令。
以上就是在 gdb 中设置断点到链接的 `.cpp` 文件里某一行的方法,希望能够帮助你。如果你有其他问题,可以继续问我哦!
相关问题
gdb调试gpgpu-sim
您好!对于使用gdb调试gpgpu-sim,您可以按照以下步骤进行操作:
1. 在编译gpgpu-sim时,确保启用了调试信息。通过在编译选项中添加`-g`选项来实现。例如:
```shell
$ make COPTFLAGS=-g
```
2. 运行gpgpu-sim,并在gdb中附加到进程。首先,在一个终端窗口中启动gpgpu-sim:
```shell
$ ./gpgpu-sim --config <config_file>
```
然后,打开另一个终端窗口,并使用以下命令附加到正在运行的进程:
```shell
$ gdb -p <pid>
```
其中,`<pid>`是gpgpu-sim进程的PID。
3. 在gdb中设置断点。可以使用`break`命令在代码中设置断点,例如:
```shell
(gdb) break main.cpp:42
```
这将在`main.cpp`文件的第42行设置一个断点。
4. 执行调试操作。使用`run`命令开始执行程序,例如:
```shell
(gdb) run
```
当程序达到断点时,调试会停止,并且您可以通过使用`print`命令查看变量的值,使用`step`命令逐步执行代码,或使用其他gdb命令进行调试。
希望这些步骤对您有所帮助!如果您有任何进一步的问题,请随时提问。
gdb调试commands
在使用gdb调试时,可以使用commands命令来设置断点,并指定在每次到达该断点时要执行的一组命令。该命令的使用方法如下:
1. 首先,使用gdb启动程序,例如:gdb ./gdbdebug
2. 接下来,使用break命令设置一个断点,例如:b abc.cpp:10
3. 然后,使用commands命令将以下命令添加到指定的断点上:
commands breakpoint-number
命令1
命令2
...
end
这里的breakpoint-number是断点号,表示将以下命令添加到指定的断点上。可以添加任何有效的GDB命令,每行一个命令,以end结束。
例如,假设我们有以下示例代码:
```cpp
using namespace std;
void func1() // 行号为10
{
cout << "before" <<endl;
}
int main() {
func1();
return 0;
}
```
我们可以使用以下命令来设置断点并指定commands:
```bash
gdb a.out
b abc.cpp:10
commands 1
silent
prints "after"
return
c
end
run
```
这样,在运行程序时,当程序执行到这个断点时,GDB会执行commands中指定的命令列表,然后继续执行程序。在这个例子中,commands命令会将输出修改为"after",然后继续执行程序,最终输出结果为"after"。
参考资料:
1. [GDB]断点(breakpoint)命令列表:commands、silent
2. 书籍《软件调试的艺术.pdf》2.11节
3. gdb commands命令用法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [GDG调试技巧之命令列表(commands)](https://blog.csdn.net/warden007/article/details/82888035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [GDB Commands用法](https://blog.csdn.net/qq_33726635/article/details/117199722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)