タグ付けされた質問 「debugging」

コンピュータプログラムのバグまたは欠陥の数を見つけて削減し、期待どおりに動作させるプロセス

1
デバッグスクリプト、-euxo pipefailを設定する-xの違いは何ですか?
スクリプトをデバッグするために知っている主な方法は-x、shabang(#!/bin/bash -x)に追加することです。 私は最近、次のようにset -euxo pipefailシャバンの下に追加する新しい方法に出会いました: #!/bin/bash set -euxo pipefail デバッグの2つの方法の主な違いは何ですか?あるものを他のものよりも好む場合がありますか? 新入生として、ここを読んだ後、私はそのような結論を引き出すことができませんでした。

2
gdbはsuid rootプログラムをデバッグできますか?
とを呼び出すプログラムを作成setuid(0)しましたexecve("/bin/bash",NULL,NULL)。 それから私はやった chown root:root a.out && chmod +s a.out 実行する./a.outと、ルートシェルが取得されます。ただし、実行gdb a.outするとプロセスが通常のユーザーとして開始され、ユーザーシェルが起動します。 だから... setuid rootプログラムをデバッグできますか?
16 debugging  setuid  gdb 

4
LinuxでSuspend-to-RAMの問題をデバッグするにはどうすればよいですか?
RAMのサスペンドの問題をデバッグする方法について、経験に基づいた提案を得たいと思っています。私の状況に固有のアドバイス(詳細は後述)は素晴らしいでしょうが、そのような問題をデバッグする方法に関する一般的なアドバイスにも興味があります。 問題: 多くの場合、マシンをサスペンドしようとすると、「サスペンドされていないが起動されていない」状態でスタックします。多くの場合、画面は完全に黒くなりますが、次のエラーメッセージが表示される場合があります。 GLib-WARNING **: getpwuid_r(): failed due to unknown user id (0) また、この状態にはファンがハイギアでキックすることも伴います。この状態から抜け出す唯一の方法は、ラップトップの電源を手動で切ることです。 いくつかの情報 $ uname -a Linux baltar 2.6.35-22-generic #34-Ubuntu SMP Sun Oct 10 09:26:05 UTC 2010 x86_64 GNU/Linux $ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 10.10 Release: 10.10 Codename: maverick 私は見て撮影した/var/log/dmesgと/var/log/pm-suspend.log、私は私が探しているかわからないと何も目立ちません。それが関連しているかどうかはわかりませんが、次の多くを見つけました/var/log/kern.log: EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro,commit=600

2
ライブラリ呼び出しのstrace
システムコールを監視するのに非常に便利なstraceを知っています。外部ライブラリへの呼び出しをトレースできる同等のものはありますか? たとえば、コードにアクセスできない(および開発者が応答しない)サードパーティバイナリを使用して、SSLeayの誤動作をデバッグしようとしています。私は問題を突き止めたと思いますが、署名チェックされているデータがSSLeayに送信するためにどのようにフォーマットされているかを正確に確認せずにこれをテストすることはできません。

1
gdbに「yまたはn」を聞かないようにする方法
GDBコマンドを使用しadd-symbol-fileてシンボルを読み込むと、GDBは常に次のように「yまたはn」を要求します。 gdb> add-symbol-file mydrv.ko 0xa0070000 add symbol table from file "mydrv.ko" at .text_addr = 0xa0070000 (y or n) 静かに尋ねて実行しないようにする方法は?
14 debugging  gdb 

2
どのプログラムがそれを実行したかをシェルスクリプトが知る方法はありますか?
* nixの世界では、どのスクリプトがそれを実行したかについての情報をシェルスクリプトが持つ方法はありますか? 例: /path/to/script1 /path/to/script_xyz この想像上のシナリオでscript_xyzは、パス情報(/path/to/script1) または プロセスPID 実行したエンティティの 注:さまざまなソリューションとアプローチに興味がありますが、実際にこれが実際に可能になるとは思わない

2
カーネル空間でのハードディスク書き込みの観察(ドライバー/モジュールを使用)
この投稿が少々密集している場合は事前におApび申し上げますが、それをより適切に定式化するのに苦労しています... 以下の私の理解は正しいですか?そうでない場合、どこが間違っていますか? ディスク書き込み中にPCで発生するすべての側面について、ログデータを「キャプチャ」するためのより良いツールはありますか? より詳細に-まず、私が使用しているOSは次のとおりです。 $ uname -a Linux mypc 2.6.38-16-generic #67-Ubuntu SMP Thu Sep 6 18:00:43 UTC 2012 i686 i686 i386 GNU/Linux だから、私は次の簡単な(たとえば、操作の失敗の通常のチェックがスキップされる)ユーザースペースCプログラムを持っていますwtest.c: #include <stdio.h> #include <fcntl.h> // O_CREAT, O_WRONLY, S_IRUSR int main(void) { char filename[] = "/tmp/wtest.txt"; char buffer[] = "abcd"; int fd; mode_t perms = S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH; fd = …

2
Unixドメインソケットから受動的にキャプチャする方法(AF_UNIXソケットモニタリング)
TCP / IPおよびUDPキャプチャはtcpdump/ dumpcapを使用して作成でき、さらなる分析のためにWiresharkに供給することができるpcap / pcapngファイルを生成します。名前付きUnixドメインソケットに同様のツールが存在しますか?(ただし、抽象ソケットで機能する一般的なソリューションもいいでしょう。) strace現状のままでは不十分であり、UnixドメインソケットI / Oをフィルタリングするのは簡単ではありません。またはを使用socatするプロキシも、既存のオープンプログラムの受動的な分析を目的としているため、適切ではありません。 Wiresharkで分析に使用できるパケットキャプチャを取得するにはどうすればよいですか?プロトコルアプリケーションの例は、X11(Xorg、私の現在のアプリケーション)およびcURL / PHP(HTTP)です。私が見たCONFIG_UNIX_DIAGのLinuxカーネルでオプションを、いくつかの使用のこれは何ですか?


2
Linuxの「トラス-T」および「トラス-U」と同等ですか?
LinuxでSolarisユーティリティのオプション-Tと-Uオプションと同等の機能はありますか?truss これらは、トレースされたアプリケーションによって呼び出されたときに停止するシステムコール(-T)またはライブラリ関数(-U)を指定することです。 または、別の言い方をすれば、特定のシステム呼び出しまたは特定の共有ライブラリー関数呼び出しを行うとすぐに、トレースされたアプリケーションによって開始されたプロセスを(SIGSTOPによって強制終了されるかのように)停止させたいと思います。 straceおよびltraceLinux上のSolarisの機能セットの多くを提供しtruss、彼らはそれをやっているようには見えません。 例えば: truss -f -T open cmd strace -f cmd実行中のプロセスcmdまたはその子孫のいずれかがopenシステムコールを実行した場合、すぐに停止されることを除きます(そして、都合の良いときに後で再開できます)。 いくつかのケースでは、私が使用できるgdbのをcatch syscall、私は便利なフォークに従うと、すべてのフォークのプロセスのためにそれをやって継続した後もそれをやって続けることができます解決策を探していたexecveの。 私は同じ機能を提供するユーティリティを思い出すようです.1つ(またはその同じユーティリティのオプション)でも、そのようないくつかのsyscallのいくつかの発生の間のシングルステップアプリケーションに、そのようなメモリが私に失敗しています、私も確信できませんそれはLinuxでした。

2
プロセスを強制終了せずにプロセスコアをダンプする
プロセスを実際に強制終了せずに、プロセスのコアダンプ(または同様のもの)を取得する方法はありますか?組み込みシステムでマルチスレッドpythonプロセスを実行しています。そして、私は通常の状態(つまり、実行に必要な他のプロセス)でプロセスのスナップショットを取得できるようにしたいのですが、Pythonプロセスなしでgdbに接続する(またはgdbで実行する)十分なメモリがありません実行している唯一のものです。 この質問が理にかなっていることを願っています。

3
Linuxでプログラムがクラッシュする問題を追跡するにはどうすればよいですか?
Windowsでアプリケーションがクラッシュした場合は、管理ツールのイベントビューアをチェックして、何がクラッシュしたかを確認できます。時にはそれは他の人が持っていない有用な情報を持っていますが、それは始まりです。 Linuxでは、アプリケーション(いずれか)がクラッシュした場合、何が起こったのかを追跡し始めますか? たとえば、いくつかの中央ログまたは同様のものはありますか?

4
現在実行中のbashスクリプトがデバッグのために-xで呼び出されたかどうかを確認するにはどうすればよいですか?
launch.sh正しい所有者でファイルを作成するために、別のユーザーとして自分自身を実行するスクリプトがあります。最初にスクリプトに渡された場合、この呼び出しに-xを渡したい if [ `whoami` == "deployuser" ]; then ... bunch of commands that need files to be created as deployuser else echo "Respawning myself as the deployment user... #Inception" echo "Called with: <$BASH_ARGV>, <$BASH_EXECUTION_STRING>, <$->" sudo -u deployuser -H bash $0 "$@" # How to pass -x here if it …
11 bash  debugging 

2
vagrantのログファイルはどこにありますか?
vagrantまたはVirtualBox関連の問題をデバッグしようとしています(taiga- vagrant が機能するtaiga環境を提供できない#21を参照)。 このコマンドVAGRANT_LOG=debug vagrant up --debugは、おそらく多くの有用な情報を出力します。ただし、このログはどこに保存されますか? Edit: VAGRANT_LOG=debug vagrant upは実際にはと同じvagrant up --debugです。私は/で作業します:Funtoo-Linux、Vagrant 1.4.3、VirtualBox 4.3.32。

3
bash:個々の行を `-x`エコーからエスケープします
-xオプションで実行しているbashで、個々のコマンドのエコーを免除することはできますか? 私は出力をできるだけきれいにしようとしているので、のサブシェルでスクリプトの特定の部分を実行していset +xます。ただし、行set +x自体は引き続きエコーされ、出力に重要な情報は追加されません。 昔のことを覚えています。で.bat実行するとecho on、個々の行はで開始することで除外できました@。bashに相当するものはありますか? #!/bin/bash -x function i_know_what_this_does() { ( set +x echo do stuff ) } echo the next-next line still echoes 'set +x', is that avoidable? i_know_what_this_does echo and we are back and echoing is back on 上記を実行すると、出力は次のようになります。 + echo the next-next line still echoes 'set …
11 bash  shell  debugging 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.