問題タブ [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.

0 投票する
19 に答える
20248 参照

debugging - What is the proper name for doing debugging by adding 'print' statements

There are many ways of doing debugging, using a debugger is one, but the simple one for the humble, lazy, programmer is to just add a bunch of print statements to your code.

i.e.

Is there a proper name for this style of debugging?

0 投票する
11 に答える
210866 参照

ruby - オブジェクトのフィールドをコンソールにダンプするにはどうすればよいですか?

簡単な Ruby スクリプトを実行しているときに、オブジェクトのフィールドをコンソールにダンプする最も簡単な方法は何ですか?

print_r()配列でも機能する PHP に似たものを探しています。

0 投票する
7 に答える
3703 参照

c - C プログラミング: seg faults、printf、および関連する癖

多くの若いプログラマーと同じように、コードのさまざまなポイントに「here1」、「here2」などの多数の print-to-console ステートメントを挿入して、プログラムがいつうまくいかないかを把握することの有用性を学びました。このブルート フォース デバッグ手法は、CS の研究を通じて何度も私を救ってくれました。しかし、C でプログラミングを始めたとき、興味深い問題に出くわしました。走ってみたら

もちろん、testCharのメモリをmallocしていないため、セグメンテーション違反が発生します。ただし、それがコードの流れであるため、セグフォルトが発生する前に「hello world」が出力されると論理的に考えるでしょうが、私の経験では、セグフォルトが最初に発生し、「hello world」が常に発生する場合があります。 " がコンソールに出力されることはありません。(この正確な例をテストすることはできませんでしたが、Linuxボックスでgccを使用してこの種の状況に何度も遭遇しました。)これは、コンパイラがいくつかのものを再配置したり、printfを実行したりすることに関係していると推測しています非同期的にフラッシュされるため、即時ではないある種のバッファを使用します。正直なところ、なぜそうなるのかはわからないので、これは完全に私の推測です。私が使用した他の言語では、「testChar = ...

私の質問は、C をプログラミングしているときになぜこれが起こるのですか? hello world が最初に出力されないのはなぜですか? 次に、同じ基本的なことを達成するこれよりも優れた C プログラミングのデバッグ手法はありますか? のように、問題のあるコード行を見つけるための簡単で直感的な方法は?

編集:私は偶然に実際の例を挙げました。私が今持っているものは、セグメンテーション違反を引き起こすはずです。おもしろいことに、セグメンテーション違反が必要ないときは通常、セグメンテーション違反を取得しますが、実際にセグメンテーション違反が必要な場合は、正当なコードを記述します!

0 投票する
2 に答える
116 参照

logging - ログステートメントがプログラムの出力を変更するのはなぜですか?

ある面接で次の質問をされたことがあるのですが、いまだにはっきりとは答えられません。私がどこでもっと学べるか知っている人がいるかどうか疑問に思っていました.グーグルはあまり役に立ちませんでした:

テストしたいプログラムがあるとします。1 つのログ ステートメントを追加すると、突然、期待される出力を生成していたプログラムが期待される出力の生成を停止します。何が起こったのでしょうか?

0 投票する
6 に答える
20550 参照

ruby - Rubyの「p」とは何ですか?

知っている人にとってはばかげた質問だと思いますが、それが何をするのか、それが何であるかについての説明が見つかりません。

" " は何をしp rowますか?

0 投票する
11 に答える
2571 参照

c - デバッグとしてのprintfがバグを隠す可能性があることを示す教育例

私がCプログラミングのあるコースにいたとき、ある教師がprintf、デバッグしようとしているプログラムの実行を監視するために使用することを提案したことを覚えています。このプログラムには、現時点では思い出せない原因によるセグメンテーション違反がありました。私は彼のアドバイスに従い、セグメンテーション違反は消えました。幸いなことに、賢いTAは、printfsを使用する代わりにデバッグするように指示しました。この場合、それは便利なことでした。

それで、今日私は誰かに使用するとバグを隠す可能性があることを示したかったprintfのですが、この奇妙なバグ(機能?うーん)を持っていた古いコードを見つけることができません。

質問:この動作に遭遇した人はいますか?どうすればこのようなものを再現できますか?

編集:

私の質問の部分は、私の意見を「使用printfが間違っている」という方向に向けていることがわかります。私はそれを正確に言っているわけではなく、極端な意見を述べるのは好きではないので、少し質問を編集しています。これは優れたツールであることに同意しますが、セグメンテーション違反が解消printfされるケースを再現したかったprintfので、注意が必要であることを証明しました。

0 投票する
6 に答える
10921 参照

debugging - printfsでHaskellを「デバッグ」する方法は?

Ocamlコミュニティから来て、私はHaskellを少し学ぼうとしています。移行は非常にうまくいきますが、デバッグとは少し混乱しています。私は以前、ocamlコードに(たくさんの)「printf」を入れて、いくつかの中間値を調べたり、計算が正確に失敗した場所を確認するためのフラグとして使用していました。

printfはIOアクションなので、この種のデバッグを可能にするには、 IOモナド内のすべてのhaskellコードを持ち上げる必要がありますか?それとも、これを行うためのより良い方法がありますか(回避できるのであれば、私は本当に手でそれをしたくありません)

トレース関数 もあります:http: //www.haskell.org/haskellwiki/Debugging#Printf_and_friends これはまさに私が欲しいもののようですが、そのタイプがわかりません。どこにもIOがありません。誰かがトレース機能の動作を説明してもらえますか?

0 投票する
2 に答える
6518 参照

makefile - pr_debug と printk の CFLAGS の設定

pr_debugLinux カーネル モジュールを理解しようとしており、およびの出力を確認したいと考えていますprintk。私はGNU Makeを使用しています。pr_debugメッセージ
を取得するには、 . DDEBUG

printkでは、ステートメントを有効にするにはどうすればよいですか?

ファイル名がkvm.c. これら2つの違いは何ですか:

このステートメントは何をしますか:

[編集]:
私の角括弧の使い方が混乱を招いているようです。実際、[ファイル名] とは、kvm.c などのファイルを意味していました。

0 投票する
3 に答える
1259 参照

c - タイプオーバーロードマクロ

私はたくさんのprintfデバッグヘルパーマクロを持っていますが、タイプを指定しないのはかなりクールですが、cでマクロのオーバーロードのようなものを許可するためにできることはありますか(gcc 4.3で利用可能な場合はgcc固有にすることができます)。私は多分タイプタイプだと思いましたが、どうやらそれはうまくいきません。

マクロの例(頭のてっぺんのことを思い出せないASCII端末の色もあります)

0 投票する
1 に答える
483 参照

python - Python - デバッグ関数で式を取得する良い方法はありませんか?

Cコードでは、次のようなprintfデバッグマクロを頻繁に使用します

そして、変数を出力する DPRINT_INT(height) のようなこと、または DPRINT_INT(from_cm_to_inch(get_average(heights))) のようなことを行うことができ、名前の式全体を出力します。

Python には C のようなマクロがないため、Python でこれを行うには

文字列を渡し、inspect を使用して呼び出し元の関数環境を取得し、eval を呼び出します。しかし、私は文字列を渡すのが好きではありません.醜くて忘れやすいです(型をチェックし、文字列以外が渡された場合は例外を呼び出します)、ideではうまく機能しません.

デバッグ機能の Python コードから変数名と式を抽出する方法はありませんか? ある?