首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

clojure:为命名空间中的每个函数添加调试跟踪?

关于Clojure的命名空间中的每个函数添加调试跟踪,可以使用以下方法:

  1. 使用defn定义函数时,在函数体内使用tap>宏来输出调试信息。

例如:

代码语言:txt
复制
(defn my-function [x y]
  (tap> (str "Entering my-function with x=" x " and y=" y))
  (+ x y))
  1. 使用with-redefs宏来重定义函数,在重定义的函数中添加调试信息。

例如:

代码语言:txt
复制
(defn my-function [x y]
  (+ x y))

(defn my-function-with-debug [x y]
  (println "Entering my-function with x=" x " and y=" y)
  (my-function x y))

(with-redefs [my-function my-function-with-debug]
  (my-function 1 2))
  1. 使用clojure.tools.trace库来添加函数调用跟踪。

例如:

代码语言:txt
复制
(require '[clojure.tools.trace :as trace])

(defn my-function [x y]
  (+ x y))

(trace/trace-ns 'my-namespace)

(my-function 1 2)

这些方法可以帮助你在Clojure的命名空间中为每个函数添加调试跟踪。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

内联和嵌套命名空间

在开发大型的项目时,往往会有很多人参与协同开发,划分成各个小组负责不同的模块,模块之间相对独立。代码中会定义很多的类名、函数名、模板名,甚至一些全局变量,如果不对这些名称加以规范,很容易造成名字的冲突,因为默认情况下这些名字都是全局名字,这种情况也称之为命名空间污染。为了避免这个问题,C++标准引入了命名空间的概念,将不同模块的名字限定在各自模块的命名空间中,命名空间中的名字的作用域只在命名空间内有效,尽可能地避免名字的冲突。命名空间在C++98标准中已经引入,它的概念以及用法这里就不再赘述,现在来介绍的是现代C++标准新增的功能:内联命名空间(C++11)和嵌套命名空间(C++17),以及在C++20中的改进。

02
领券