perl - 如何将工作断点设置为常量表达式?
问题描述
我有 Perl 代码,它使用带有初始化块的常量,如下所示:
use constant C => map {
...;
} (0..255);
当我尝试在该行设置断点...;
时,它不起作用,这意味着:我可以设置断点,但调试器不会停在那里。
我试过了:
- 使用调试器启动程序 (
perl -d program.pl
) - 在调试器中设置断点 (
b 2
) - 使用 重新加载
R
,然后运行 (r
) 程序
但是调试器仍然没有停在该行,就好像我没有设置断点一样。
我的 Perl 不是最新的;它是 5.18.2,以防万一……
解决方案
use
您正试图在一个块中放置一个断点。use 块实际上是一个BEGIN
带有 a 的块require
。Perl 调试器默认不会在编译阶段停止。BEGIN
但是,您可以通过将变量设置为来强制 Perl 调试器进入块$DB::single
内的单步模式1
见Debugging Compile-Time Statements
_perldoc perldebug
如果您将代码更改为
use constant C => map {
$DB::single = 1;
...;
} (0..255);
Perl 调试器将在 use 语句中停止。
推荐阅读
- c# - UWP MediaPlayerElement 防止传输控件重叠视频
- javascript - 如何增加对象数组中对象的值。猫鼬和 MongoDB
- javascript - 使用上下文 API 的子到父,onClick 被多次调用 - ReactJs
- python - 如何摆脱 Python 中的括号和逗号?
- android - 如何在活动中分割方法
- version-control - 更新不会更改包中任何内容的依赖版本
- css - 如何使用 css 使字体真棒图标垂直居中?
- sh - 奇点运行错误:容器中没有有效的 /bin/sh
- ruby-on-rails - 为什么即使我没有登录,Rails 也会给我分配一个 _app_session cookie?
- python - 我使用了 try/except 函数来克服它,但即使在使用该函数后我仍然得到错误