7

我正在使用 GDB 在 Solaris 10 x86 上调试封闭源程序。

我将 gdb 附加到程序并继续执行,但是当我想稍后暂停执行以检查我无法检查的一些内存时。当我按下 CTRL-C 时,它只打印 ^C 而不是暂停程序并将我放到 (gdb) 提示符下。

bash-3.00# gdb --pid=1521
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-pc-solaris2.10".
Attaching to process 1521
Retry #1:
Retry #2:
Retry #3:
Retry #4:
[New LWP 1]
0xfe3b5a23 in ?? ()
(gdb) c
Continuing.
^C^C^C^C^C^C^C^C

如何返回 (gdb) 提示?我是不是做错了什么,或者我该如何让它发挥作用。

4

3 回答 3

4

Just found a workaround. From another terminal give the following command:

kill -INT 1521

GDB will pause execution upon the debugged program receiving the SIGINT.

于 2009-03-05T14:39:24.437 回答
0

这将是 GDB 中的一个错误。

如果您可以使用CVS Head的当前版本的 GDB 重现此问题,请提交错误

于 2009-03-06T02:24:18.720 回答
0

当您使用 Solaris 时,我看到您正在使用 bash,您可能没有正确设置终端,bash 通常可以为您处理很多这样的事情,但是如果您使用 ksh 或其他东西,您的退格键可能正在打印^H 而不是退格(在这种情况下,您需要 stty erase '^H' ...您始终可以使用 stty sane 设置控制台。

这里一个可能的问题(不是错误)是您正在调试的应用程序正在重置您的终端,我现在不在 Solaris 机器上,但是 GNU stty 允许您执行类似 stty tostop 的操作,

  • [-]tostop 停止尝试写入终端的后台作业

您还可以从另一个终端运行 reset 或 tset 并重新配置您的 ^C

在 gdb 中,您可以使用“tty”别名或设置 lower-tty /path/to/term

Set terminal for future runs of program being debugged.
Usage: set inferior-tty /dev/pts/1
于 2009-07-14T01:54:20.090 回答