问题标签 [printf-debugging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
debugging - 通过添加“打印”语句进行调试的正确名称是什么
进行调试的方法有很多种,使用调试器就是其中一种,但对于谦虚、懒惰的程序员来说,最简单的方法就是在代码中添加一堆打印语句。
IE
这种调试方式有合适的名称吗?
ruby - How do I dump an object's fields to the console?
When I'm running a simple Ruby script, what's the easiest way to dump an object's fields to the console?
I'm looking for something similar to PHP's print_r()
that will work with arrays as well.
c - C 编程:seg 错误、printf 和相关怪癖
正如许多年轻的程序员所做的那样,我学会了在代码的不同点插入大量“here1”、“here2”等打印到控制台的语句来找出我的程序何时出错的有用性。在我的 CS 学习过程中,这种蛮力调试技术为我节省了很多很多次。然而,当我开始用 C 编程时,我偶然发现了一个有趣的问题。如果我试着跑
当然,我得到一个段错误,因为我没有为 testChar 分配内存。但是,从逻辑上讲,您会认为“hello world”会在段错误发生之前打印,因为这是代码的流程,但根据我的经验,总是首先发生段错误,并且“hello world” " 根本不会打印到控制台。(我无法测试这个确切的例子,但我在linux机器上使用gcc多次遇到这种情况。)我猜这与编译器重新排列一些东西和/或printf有关使用某种异步刷新的缓冲区,因此不是立即的。这完全是我的猜测,因为我真的不知道为什么会发生。在我使用过的任何其他语言中,无论出现什么问题,“testChar =...
我的问题是为什么在我编写 C 语言时会发生这种情况?为什么不先打印hello world?其次,是否有比这更好的 C 编程调试技术来完成相同的基本任务?例如,一种简单/直观的方法来查找有问题的代码行?
编辑:我偶然给出了一个工作示例哈哈。我现在拥有的应该会导致段错误。有趣的是,当我不想要一个段错误时,我通常会得到一个,而现在当我真正想要一个时,我会编写合法代码!
logging - 为什么日志语句会改变程序的输出?
我曾经在一次采访中被问到以下问题,但我一直没有很清楚答案。我想知道是否有人知道我可以在哪里了解更多信息,谷歌搜索并没有太大帮助:
假设您有一个想要测试的程序。您添加了一条日志语句,突然间,产生预期输出的程序停止产生预期输出。可能发生了什么?
ruby - Ruby 中的“p”是什么?
我敢肯定,对于那些知道的人来说,这是一个愚蠢的问题,但我找不到它的作用或它是什么的解释。
“ p row
”有什么作用?
c - 教育示例表明有时 printf 作为调试可能会隐藏错误
我记得当我在学习 C 编程课程时,一位老师曾经建议我用它printf
来观察我正在尝试调试的程序的执行情况。这个程序有一个分段错误,原因我现在不记得了。我听从了他的建议,分段错误消失了。幸运的是,一位聪明的 TA 告诉我要调试而不是使用printf
s。在这种情况下,这是一件有用的事情。
所以,今天我想向某人展示使用printf
可能会隐藏一个错误,但我找不到那个有这个奇怪错误的旧代码(功能?嗯)。
问题:你们中的任何人是否也遇到过这种行为?我怎么能重现这样的东西?
编辑:
我看到我的问题部分将我的观点导向“使用printf
是错误的”。我并不完全这么说,我不喜欢采取极端的意见,所以我正在编辑这个问题。我同意这printf
是一个很好的工具,但我只是想重新创建一个printf
s 使分段错误消失的情况,因此证明必须小心。
debugging - 如何使用 printfs “调试” Haskell?
来自 Ocaml 社区,我正在尝试学习一点 Haskell。过渡进展顺利,但我对调试有点困惑。我曾经在我的 ocaml 代码中放置(很多)“printf”,以检查一些中间值,或者作为标志来查看计算完全失败的位置。
由于 printf 是一个IO操作,我是否必须在IO monad 中解除我所有的 haskell 代码才能进行这种调试?或者有没有更好的方法来做到这一点(如果可以避免的话,我真的不想手工做)
我还找到了跟踪功能: http ://www.haskell.org/haskellwiki/Debugging#Printf_and_friends 这似乎正是我想要的,但我不明白它的类型:任何地方都没有IO!有人可以解释一下跟踪功能的行为吗?
makefile - 为 pr_debug 和 printk 设置 CFLAGS
我正在尝试了解 Linux 内核模块,并希望查看pr_debug
and的输出printk
。我正在使用 GNU Make。
我知道要获取pr_debug消息,我们必须使用DDEBUG
.
那么,如何启用printk
语句?
可以说文件名是kvm.c
. 这两者有什么区别:
这个语句有什么作用:
[编辑]:
看起来我对方括号的使用引起了一些混乱。实际上,[文件名],我的意思是一些文件,比如 kvm.c。
c - 类型重载宏
我有一堆 printf 调试助手宏,不必指定类型会很酷,有什么可以做的,以允许在 c 中进行宏重载之类的事情(如果它在 gcc 4.3 中可用,则可以是 gcc 特定的)。我想也许是 typeof 但显然这不起作用。
示例宏(我也有一些我不记得头顶的 ascii 终端颜色的东西)
python - python - 没有更好的方法来获取调试函数中的表达式
在 c 代码中,我经常使用 printf 调试宏,例如
然后我可以执行诸如 DPRINT_INT(height) 之类的操作,它将打印变量或诸如 DPRINT_INT(from_cm_to_inch(get_average(heights))) 之类的操作,它将打印出名称的整个表达式。
为 python 执行此操作,因为 python 没有类似 c 的宏
我传递一个字符串并使用检查来获取调用函数环境以调用 eval。但我不喜欢传递字符串,它丑陋且容易忘记(我让它检查类型并在传递非字符串时调用异常)并且在 ide 中效果不佳。
没有任何方法可以从调试函数的 python 代码中提取变量名和表达式?有没有?