0

所以我试图在另一个 perl 调试器中运行一个 perl 调试器。我一直在 perl 中阅读 tty 是解决方案。有人可以向我解释 tty 的含义(它是终端类型吗?)以及它有什么用处?这是我读到它的地方: http : //search.cpan.org/~rjbs/perl-5.18.0/lib/perl5db.pl# $CreateTTY 我尝试使用 tty 的原因是因为我问了这个问题: 在调试器中将参数传递给 perl 文件并在系统执行的文件中设置断点 感谢所有回答的人,你们告诉我的越多,我得到的想法就越好 :)

4

1 回答 1

0

TTY(电传打字机的缩写)基本上是一个连接到终端的特殊输入或输出文件句柄——即用户输入。有关详细信息,请参阅:


这是初学者需要了解的内容(很难说更多,因为您没有解释使用 TTY 需要做什么):

  • 在 Unix 上,它通常映射到/dev/tty设备或类似设备

  • 您可以使用Perl对其进行测试-t


至于调试器,至少需要知道两件事(如果你打算玩 TTY,最后一段是最重要的)。所有数据都近乎引用perldoc perldebug

  1. p expr打印到$DB::OUT文件句柄(NOT STDOUT),而文件句柄又对/dev/tty.

    认为这可能是由LineInfo选项控制的,PERLDB_OPTS但从未玩过它,所以不确定。

  2. 可能受以下$ENV{PERLDB_OPTS}选项影响:

    • TTY - 用于调试 I/O 的 TTY。

    • noTTY - 如果设置,调试器将进入 NonStop 模式并且不会连接到 TTY。如果被中断(或者如果控制通过 Perl 脚本中的 $DB::signal 或 $DB::single 的显式设置转到调试器),它会连接到启动时在 TTY 选项中指定的 TTY,或者连接到在运行时使用Term::Rendezvous您选择的模块。

      这个模块应该实现一个名为 new 的方法,该方法返回一个具有两种方法的对象: IN 和 OUT 。这些应该返回文件句柄以用于相应地调试输入和输出。新方法应该在启动时检查包含 $ENV{PERLDB_NOTTY} 值的参数,否则检查 "$ENV{HOME}/.perldbtty$$"。没有检查此文件的所有权,因此理论上可能存在安全隐患。

于 2013-07-29T07:46:43.003 回答