当前位置:  开发笔记 > 编程语言 > 正文

你如何使用'target remote'在gdb中重新开始运行程序?

如何解决《你如何使用'targetremote'在gdb中重新开始运行程序?》经验,为你挑选了2个好方法。

当您在同一台计算机上的可执行文件上执行常规gdb会话时,您可以提供运行命令,它将再次启动该程序.

当您在嵌入式系统上运行gdb时,与命令target localhost:3210'一样,如何在不退出并重新启动gdb会话的情况下重新启动程序?



1> 小智..:

您正在寻找gdbserver和的多进程模式set remote exec-file filename



2> Drew Frezell..:

不幸的是,我不知道重新启动应用程序并仍然维护会话的方法.解决方法是将PC设置回程序的入口点.您可以通过以下方式执行此操作:

jump function

要么

set $pc=address.

如果你把争论提到了main你可能需要重新设置它们.

编辑:

上述方法有几点可以引起问题.

如果你在一个多线程程序中跳转到main会将当前线程跳转到main,所有其他线程都会保留.如果当前线程持有锁...那么你有一些问题.

内存泄漏,如果程序流在初始化期间分配一些东西,那么你只是通过跳转泄漏了一堆内存.

打开的文件仍将保持打开状态.如果您映射某些文件或地址,则呼叫很可能会失败.

因此,使用jump与重新启动程序不同.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有