Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang 在远程节点上打开dbg跟踪?_Erlang - Fatal编程技术网

Erlang 在远程节点上打开dbg跟踪?

Erlang 在远程节点上打开dbg跟踪?,erlang,Erlang,在系统测试中运行Erlang应用程序时,有时我想打开并捕获调试跟踪 Erlang节点是使用relx启动脚本(称为\u rel/bin/foo foreground)启动的,因此我无法控制启动选项。系统测试运行程序(用Python编写)正在从节点捕获stdout 如何使用-remsh连接到Erlang节点,启用dbg-tracing,并将输出写入原始节点上的标准输出?我如何以Python友好的方式完成这一切(尽管我很乐意编写一个escript,如果这样做会更容易的话) 更为复杂的是,relx生成的

在系统测试中运行Erlang应用程序时,有时我想打开并捕获调试跟踪

Erlang节点是使用relx启动脚本(称为
\u rel/bin/foo foreground
)启动的,因此我无法控制启动选项。系统测试运行程序(用Python编写)正在从节点捕获stdout

如何使用
-remsh
连接到Erlang节点,启用
dbg
-tracing,并将输出写入原始节点上的标准输出?我如何以Python友好的方式完成这一切(尽管我很乐意编写一个escript,如果这样做会更容易的话)


更为复杂的是,relx生成的发行版不包含
运行时工具库,因此
dbg:
实际上不可用,所以我还要补充一点。

可以这样做的方法很少。这一切都取决于您熟悉什么,以及您的用例是什么

  • 我会从手工做每件事开始。通过这种方式,您可以最大程度地控制正在进行的调试,以及效果的外观(如果调试过多或不够)。这是我最熟悉的,最后,您几乎总是必须连接到远程shell并手动执行某些操作(根据我的经验)

  • dbg
    的一个特性是,没有太多人谈论从文件中保存/加载跟踪粘贴的能力。我找到了在会话之间存储和共享调试信息的最简单方法;但缺乏可读性可能是一个很大的权衡

  • 如果您不想过多地干扰您的实时系统,则不必使用
    dbg
    。您可以使用默认情况下提供的
    erlang:trace
    ,但是您必须小心您将VM留在的状态(
    dbg
    应该在退出时关闭所有跟踪;使用
    erlang:trace
    这是您的责任)

  • 若调试会话是python脚本的一部分,那个么编写escript并从python调用它将是我的方法。您只需记住,描述是在新VM中运行的,
    -remsh
    而不是允许您在其他VM上运行代码。为此,您必须使用
    rpc
    模块

  • 由于您使用的是发布的应用程序,所以您可以查看日志记录。有人可能会认为应该已经有了一些日志记录,这在Erlang中是很标准的,并且有可能实现


就我个人而言,我会尝试一些第一种和最后一种选择的混合,然后进行实验。

我们已经在使用啤酒来进行日常记录;对于这个特定的失败测试,我希望获得模块中每个调用函数的跟踪。这不是在生产中,所以我不担心性能影响。