トップページ⇒tech
403コメント100KB

デバッグ技術を話しましょう

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
デバッグはとても重要なのにスレが内容なので作りました。
0002デフォルトの名無しさんNGNG
スレが内容
00031NGNG
ちなみにジャンルは問いません。
0004デフォルトの名無しさんNGNG
内臓がないぞう
0005デフォルトの名無しさんNGNG
少しはネタを考えて・・・
00061NGNG
>>5
デバッグはするべきだと思います。
0007デフォルトの名無しさんNGNG
>>1
これ見てどう思いますか?
http://www.stileproject.com/monkey_sugar.swf
0008デフォルトの名無しさんNGNG
それのどこがデバッグ技術?
0009デフォルトの名無しさんNGNG
カワックはいいですね。
00107NGNG
>>9
わかる?
0011デフォルトの名無しさんNGNG
デバッグツールとか
デバッグのためにコードに施す細工とか?
00121NGNG
デバッグと聞くだけでつい勃起してしまいます。
0013デフォルトの名無しさんNGNG
削除依頼完了
0014デフォルトの名無しさんNGNG
ddd
0015デフォルトの名無しさんNGNG
>>7はわかりやすいね
0016デフォルトの名無しさんNGNG
いまさらモンキーシュガーかよ。
0017デフォルトの名無しさんNGNG
完璧な設計と完璧なコーディングがあればデバッグなど必要ありません。
0018デフォルトの名無しさんNGNG
誰かリンク先の解説プリーズ
0019デフォルトの名無しさんNGNG
>>16
まだまだ使える
00201NGNG
デバッガになるのが夢です。
0021デフォルトの名無しさんNGNG
>>17
設計とコーディングを完璧にするためのデバッグ作業なんだと思います
00221NGNG
みんなデバッグには興味ないのかな。
0023デフォルトの名無しさんNGNG
バグがあっても一切気にしません。
「仕様です」の一言で全て押し通しています。
0024デフォルトの名無しさんNGNG
1もバカだが、削除依頼してるやつも結構なバカだな。
0025デフォルトの名無しさんNGNG
なんで?
0026デフォルトの名無しさんNGNG
ちなみに >>1 は、何使ってるわけ?
0027デフォルトの名無しさんNGNG
gdb
00281NGNG
なかよくデバッグしようよ!
00291NGNG
>>26
いまはWindowsで開発してるのでVC++のデバッガがメインです。
デバッガ関連の本ってほとんどみつからないので
MicrosoftPressのデバッグテクニックぐらいしか読んでません。
0030デフォルトの名無しさんNGNG
とりあえずprintf
0031デフォルトの名無しさんNGNG
http://www.ascii.co.jp/books/detail/4-7561/4-7561-1745-7.html
この本はどうよ?
0032デフォルトの名無しさんNGNG
アセンブラスレで十分
0033デフォルトの名無しさんNGNG
デバッガの実装について知りたかったので>>31は読んでみようと思う。
他に参考文献あったら教えてください
00341NGNG
僕も教えてください。
0035デフォルトの名無しさんNGNG
とりあえず、バグ出しの為のちゃんとしたテストやれるかどうかだと思うが。
バグが発見されればそれを修正するのは(技術的には)簡単なのだし。
00361NGNG
おいおい、とんだアマちゃんがやってきたぞ。
0037デフォルトの名無しさんNGNG
ただ今"プロの逝って良しの1"
にインスパイアされた>1が頑張ってます。
0038デフォルトの名無しさんNGNG
XPキチガイでも召還するか?
テストファーストですが何か?
0039デフォルトの名無しさんNGNG
>>35
99%のバグはそんな感じだね。
問題はテストを通り抜けた、再現条件も問題箇所も定かじゃない不具合。
データ収集するために不具合起こるまで24時間張り付きってのも珍しく
ない。
#原因がうちの製品じゃないとわかった時の無気力感といったら。。
00401NGNG
やれやれだな。
0041XPマンセーNGNG


  テ ス ト フ ァ ー ス ト で す が 何 か ?


0042デフォルトの名無しさんNGNG
SoftICEってどのくらい使えるの?
0043デフォルトの名無しさんNGNG
>>42
後数年は大丈夫かと
0044デフォルトの名無しさんNGNG
age
0045デフォルトの名無しさんNGNG
W32dasm...
0046デフォルトの名無しさんNGNG
>>1
こういうのか?
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_CRT__CrtSetDbgFlag.asp?frame=true

VC++厨でスマソ.
0047デフォルトの名無しさんNGNG
デバッグ技術は重要なのに誰も語らないのは技術として確立させるとデバッグがつまらなくなるから。
0048デフォルトの名無しさんNGNG
よくある設計バグをBug Patternとして発表。
004949NGNG
>>48
それどっかのページで見たことある.
さがしてくるわ
0050デフォルトの名無しさんNGNG
>>47
重要か?
0051デフォルトの名無しさんNGNG
gdb 使うべきか printf 使うべきか…
0052デフォルトの名無しさんNGNG
とりあえず、リーク関連はバウンズチェッカーでなんとかしてる
00531NGNG
うちのプロジェクトは金が無いのでバウンズチェッカーは無い。
メモリ確保、開放は専用のクラスを用意して管理してるので開放忘れはないけど、
変な参照、書き換えまでは管理できない。
0054デフォルトの名無しさんNGNG
出かけるときに持っていくけれど軽い方が良いですよね。
0055デフォルトの名無しさんNGNG
>>54
ベタですね
0056デフォルトの名無しさんNGNG
>>53
バウンズチェッカーって20万しないよ・・・
この手のツールを使わないことで損する時間をお金に換算したら
20万なんてあっというまだよ・・
0057デフォルトの名無しさんNGNG
ccmalloc
0058デフォルトの名無しさんNGNG
>>56
不景気の今、その20万を人件費に使ってくれる方がいい親方だな
0059デフォルトの名無しさんNGNG
>>58
2週間くらいしか雇えないんですが。
00601NGNG
>>56
僕もそう思うけどそれが理解できるいい上司に恵まれていない。
個人で買おうと何度か思ったし、今も迷いつづけている。
0061デフォルトの名無しさんNGNG
>>59
 2週間もありゃ、それなりのツール作れるだろ
0062デフォルトの名無しさんNGNG
>>60
うーん、がんがれ。

これから少なくとも5プロジェクトに使います、
1プロジェクトあたり4万円です、でもダメかな。ダメなんだろうな。
0063デフォルトの名無しさんNGNG
スマートポインタを使えば解決したりしません?
メモリリーク関係の、ほとんどの問題。

# とかいいながら、スマートポインタをよく知らない罠。
0064デフォルトの名無しさんNGNG
>>63
スマートポインタは関数内での一時オブジェクトの解放忘れを解決してくれるだけ
0065デフォルトの名無しさんNGNG
関数内の解放忘れは分かりやすいんだよなぁ・・。
0066デフォルトの名無しさんNGNG
自分で書いたコードだけが原因なら、まあなんとかなるんだけどね・・・
0067デフォルトの名無しさんNGNG
age
0068デフォルトの名無しさんNGNG
デバグ以前にテストしないやつ多すぎ
0069デフォルトの名無しさんNGNG
>>68
>>41
0070デフォルトの名無しさんNGNG
テストファーストってテスト項目を最初に作るってことじゃん。
あふぉですか?>>69
0071デフォルトの名無しさんNGNG
XPなら作って即効テストだがな。
0072デフォルトの名無しさんNGNG
何行書いたら実行します?
おれはとりあえず、一つのファイル分
全て書き終えるまでは我慢します。
それからデバッグ。

あんまり頻繁にコンパイル実行を繰り替えすのは
効率が悪い。知らないライブラリを使うときは
別でテストモジュールをいくつか作ればよいし。
0073デフォルトの名無しさんNGNG
>>72
使うツールによると思う。 Cで書く時はそういう感じ
アセンブラの場合は数行書く毎にアセンブルは試験の為にかける
Delphiの場合は 粗く造ってから肉付けするように動かしながら作ったり、一挙に複数のユニットを書いたり
0074デフォルトの名無しさんNGNG
> あんまり頻繁にコンパイル実行を繰り替えすのは効率が悪い。

コンパイルしながらコード書いてます。
バックグラウンドで自動的にやってくれるので手間はかかりませんよ。
00751NGNG
>>72
VCで開発してるので関数1つ作るごとにコンパイルしている。
変更したファイルだけコンパイルしてリンクしてくれるので時間は大してかからない。
コンパイルすると単純なスペルミスはすぐにわかるのでちょっと便利かな、と。
一応テストはその日の夕方ぐらいにして(関数とかクラスの単体テスト)いる。
0076デフォルトの名無しさんNGNG
私めもコンパイルは頻繁にしてるけど、
実際に実行するのはロジックそのものが結構完成してからだね。

下位DLLとかの開発の場合は、上位TPとかを作成せんことには
デバッグできんし
0077デフォルトの名無しさんNGNG
紙と鉛筆があればプログラム完成までコンパイルしない。
画面の前に座ってしまうと、関数ごとかな。

未だに机上コーディングな人。
0078デフォルトの名無しさんNGNG
ひとつのファイルとか言ってたら作業が滞ってしまう。
他人が作ってるモジュール/クラスから呼ばれる関数もあるし。
0079デフォルトの名無しさんNGNG
>>78
単体の検証抜きで、いきなり結合するんかい。
0080デフォルトの名無しさんNGNG
プロセスにアタッチできる機能を教えてもらって
びびった記憶がある
0081デフォルトの名無しさんNGNG
age
00821NGNG
VisualQuantify使ってる人誰かいない?
なぜかおいてあるので使ってみたが・・・・
0083デフォルトの名無しさんNGNG
なんていうか…。
MFCやAPIの動きを調査しながら設計しながら実装しながら
デバッグしてるんですけどまずいですか(×_×)

だってMFCの動きが思ってたのと違ったんだよー。
0084デフォルトの名無しさんNGNG
http://sourceforge.net/projects/cunit/
http://www.splint.org/
みたいなフリーでデバッグに使えるツールないかな
0085デフォルトの名無しさんNGNG
>>83
テストプログラムを大量に書きまくるべし。
そしてそこからコピペ。
実アプリを作る過程とテストプログラムを書くのを
分けたところで、そんなに作業ロスは発生しない。
008683NGNG
>85
ども。難しそうなとこはそうしてるんですけどね。
タカをくくっていたところをぶっつけで組み込んでみたら
ヤラレタという…。

話題をスレに戻すと。
そんなこんなで結構バグ修正のためにその場で設計の微調整っていうか
細かい再設計をしなくちゃならないことがあるなあ、ってことです。
0087デフォルトの名無しさんNGNG
バグってハニー
0088デフォルトの名無しさんNGNG
ddd
0089デフォルトの名無しさんNGNG
焼畑式デバッグって一般的な用語?
それとも極局所でしか通じない?
0090デフォルトの名無しさんNGNG
>89
なんだっけそれ?
どこか本で読んだような気もするけど全然一般的じゃないんじゃない?
0091デフォルトの名無しさんNGNG
多分、awkかCだったような・・・
方法としてはよくつかうんだけど・・・
0092デフォルトの名無しさんNGNG
関数内の解放忘れは分かりやすいんだよなぁ・・。
0093デフォルトの名無しさんNGNG
i�`
0094デフォルトの名無しさんNGNG
0095tomi ◆esXgiUMaBc NGNG
デバックなんてクズの中のチンカスだよ
0096デフォルトの名無しさんNGNG
>>95
おまえのバグだろ、ごらー
http://pc.2ch.net/test/read.cgi/prog/1037637734/l50
0097デフォルトの名無しさんNGNG
>>89-90
sed & awk 本かな?
コードブロックをどんどん削除して行く手法。
0098デフォルトの名無しさんNGNG
0099デフォルトの名無しさんNGNG
0100デフォルトの名無しさんNGNG
0101デフォルトの名無しさんNGNG
>>98-100
これって何だ?
0102IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0103デフォルトの名無しさんNGNG
>>459
ワラタ
0104デフォルトの名無しさんNGNG
>>584
バイソン
0105デフォルトの名無しさんNGNG
>>124はスニーカーズ
0106デフォルトの名無しさんNGNG
半角で串が使えねぇぞ!!!!!!!!!
0107デフォルトの名無しさんNGNG
>>162
音無響子さん?
0108デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0109デフォルトの名無しさんNGNG
別にいいけど、ガイドラインの「匿名」ってのは全部消さないとね。
0110デフォルトの名無しさんNGNG
素朴な疑問ですが、どうしてこの板だけスレストされるのですか?
0111デフォルトの名無しさんNGNG
少しレベル落としてやろうか?

>内容証明で名誉毀損の部分を削除しろって言うわけでしょ。
>その時点で、ひろゆきは名誉毀損を知るから、

一行目と二行目は論理性が無いといってるんだよ。これで分かる?
0112デフォルトの名無しさんNGNG
>>47
日本語の分からない人だね。内容証明があったからといって
名誉毀損があったとは限らないって言ってるの。

その上で裁判所は訴状送達の翌日としたのは、その時点で
名誉毀損を「認識した」ではなくて、「認識しえた」からなの。
わかる?この違い。
0113デフォルトの名無しさんNGNG
test
0114デフォルトの名無しさんNGNG
普通の告発サイトも作れなくなるね、塩なり鳥なりISPが訴えられるからね。
創価批判もできなくなるね、NiftyなりOCNなりISPが訴えられるからね。
朝鮮マンセーしか言えなくなるね、KDDIなりYBBなりISPが訴えられるからね。

一般市民は何も言えなくなるね、塩なり鳥なりISPが訴えられるからね。

普通の告発サイトも作れなくなるね、塩なり鳥なりISPが訴えられるからね。
創価批判もできなくなるね、NiftyなりOCNなりISPが訴えられるからね。
朝鮮マンセーしか言えなくなるね、KDDIなりYBBなりISPが訴えられるからね。

一般市民は何も言えなくなるね、塩なり鳥なりISPが訴えられるからね。

普通の告発サイトも作れなくなるね、塩なり鳥なりISPが訴えられるからね。
創価批判もできなくなるね、NiftyなりOCNなりISPが訴えられるからね。
朝鮮マンセーしか言えなくなるね、KDDIなりYBBなりISPが訴えられるからね。

一般市民は何も言えなくなるね、塩なり鳥なりISPが訴えられるからね。
0115デフォルトの名無しさんNGNG
”匿名”をやめるか”2ch”をやめるか
そもそも匿名でなんでもかける っちゅーのが間違い
IP&リモホ表示上等

from IIJ4U
0116デフォルトの名無しさんNGNG
つーか糞スレで駄レスしかしないニュー速住人にとってはIP記録されても
別になんともないじゃん。

0117デフォルトの名無しさんNGNG

(・∀・)ニヤニヤ 
0118デフォルトの名無しさんNGNG
まずはニュー速+で勝手に某国大統領の肖像を使用している
事を改めるべきだな。自分のケツを拭けない物が他人の肛門
のちり紙を笑っているのと同じだよ
0119デフォルトの名無しさんNGNG
>>312
おぉー。。。
0120デフォルトの名無しさんNGNG
マソコ
0121デフォルトの名無しさんNGNG
今おれ居酒屋で置き引きしてきた携帯で書き込んでんだけど、おれが何書いても本来の持ち主の責任か?藁
0122デフォルトの名無しさんNGNG
さん
夜なのですの?
0123デフォルトの名無しさんNGNG
知らんかたよ
0124デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0125デフォルトの名無しさんNGNG
名誉毀損だとして その後書いた本人に出頭命令がくるのかな?
覚悟して書いたら出頭してちゃんと証言すればヨシかな?
0126デフォルトの名無しさんNGNG
ワラタ
生きろ!快速ストーカー
0127デフォルトの名無しさんNGNG
2ちゃんねるがアクセスログ記録を始めましたが、あなたの考えは?
http://newspolls.yahoo.co.jp/public/archives/2076384460/p-ne6-7?m=r
0128デフォルトの名無しさんNGNG
ひとりキャップ

関係ない

正解
0129デフォルトの名無しさんNGNG
6億円もらったら似非2ちゃんねる作ってもいいよ
0130デフォルトの名無しさんNGNG
マジでIPってなんですか?
0131デフォルトの名無しさんNGNG
IPとれば処罰しやすくなるんだから良いことだ。マンコとかいてるぶんには、なんの問題もない
0132デフォルトの名無しさんNGNG
心配なら学校休ませればいいのに。ってか、他人の子供なんて
正直どうでもいいような気がするんだなぁ。
0133デフォルトの名無しさんNGNG
世田谷一家を殺害した2ちゃんねらーの犯人の逮捕はいつですか?
0134デフォルトの名無しさんNGNG
なかよくデバッグしようよ!
0135名無し@沢村NGNG
皆々様方〜ファイルを読み込んだときエラーが出たのでデバッガを起動したところ、
次の個所に矢印がつきました。
皆々様方〜これは何↓?

bff64e82 cmp word ptr [ecx],6890

0136デフォルトの名無しさんNGNG
>>135
問題を検出した (≠原因となった) 、命令。
0137デフォルトの名無しさんNGNG
a
0138デフォルトの名無しさんNGNG
ではその弁護士、並びにその雇用者がルールに従うべきでしょう(^_^;)つまり全員
0139デフォルトの名無しさんNGNG
マァヴさん。。。。。
0140山崎渉NGNG
(^^)
0141デフォルトの名無しさんNGNG

4nd ボー カレー
0142山崎渉NGNG
(^^)
0143山崎渉NGNG
(^^)
0144デフォルトの名無しさんNGNG
だれか gdb の良書しりませんか? この間、ストールマンが書いた gdb の本を読んだけど
数ページめくっただけど疲れちゃったよ。
0145デフォルトの名無しさんNGNG
>>144
まず体から鍛えようね。
0146デフォルトの名無しさんNGNG
ttp://www.amazon.co.jp/exec/obidos/ASIN/475613016X/ref=pd_sim_dp_3/250-7867078-6817845
GDBデバッギング入門
リチャード ストールマン (著), ローランド ペシュ (著), Richard M. Stallman (原著), Roland H. Pesch (原著), コスモプラネット (翻訳)

立ち読みしたのはこれ。 amazon で検索してもGDBの本は一冊しかないんですよね。 みなさんGDBの使い方はどうやって勉強したんですか?
0147デフォルトの名無しさんNGNG
一発でバグのないコードを書けるからデバッグの必要はないね。

と言ってみたい。
0148デフォルトの名無しさんNGNG
>>146
マジレス。

普通に、「ヘルプで。」
0149デフォルトの名無しさんNGNG
man か info で。
0150146NGNG
>148
マジで? お前らすげー。
0151デフォルトの名無しさんNGNG
>>146
すこしずづ覚えていくしかないんじゃない。
0152デフォルトの名無しさんNGNG
デバッガは

・ブレークポイントを貼る
・コールスタックを覗く
・レジスタを覗く
・変数を監視

こんだけできれば大概の問題は解決するんで、そんなに覚えることは多くないと思うけど?
0153デフォルトの名無しさんNGNG
gdbで思い出したけど、cygwinにはGUIフロントエンドが付いてるのな。
関心した。
0154デフォルトの名無しさんNGNG
まともなIDEを使う。コード補完その他の機能盛りだくさんの。
0155デフォルトの名無しさんNGNG
ddd使いはおらんがぁ〜?
0156デフォルトの名無しさんNGNG
Javaの話だけど、VisualAgeForJava(IBM)
のデバッガは非常に簡単で使いやすいと個人的に思うに。

まぁIDEはみんなそうなのかな?
0157デフォルトの名無しさんNGNG
ここの住人は、究極のデバッガELIZAをしらんのかー?!




と、適当に検索したら出てきた単語を言ってみる。
0158デフォルトの名無しさんNGNG
XPのテストファーストをきちんと実践すれば、
デバッガ起動する機会はほとんどなくなるよん。
0159デフォルトの名無しさんNGNG
ちょっとお知恵を拝借。
ddd(gdb)を使っているのですが、ソースが途中までしか表示されません。
この症状に何か心当たりありませんか?
よろしくお願いします。
0160デフォルトの名無しさんNGNG
>>158
テストファーストはバグを見つけるものであってバグを退治するものじゃない。
0161159NGNG
ごめんなさい、sage書くの忘れてた(汗

ソースコード自体は5000行ほどしかないのですが。
なぜか途中までしか、読み込んでくれません。
そういうもんですか?
そんなわきゃないか。
0162デフォルトの名無しさんNGNG
>>161
いや、質問はageてくれ、

> ソースが途中までしか表示されません。
通常設定だとgdbはブレイクポイントの上下5行程度しか表示しない
set listsize 20
とすれば上下10行(つまり全部で20行)表示するようになる。

それかバイナリとソースが不一致だと変な動作をすることがある。
0163159NGNG
レスどうも。

> 通常設定だとgdbはブレイクポイントの上下5行程度しか表示しない

まだブレイクを設定前の段階なんです。
dddを起動して出てくるソースの表示が途中まで(900行ぐらい)しかでてこないと。

set listsizeもこれからやってみます。
0164159NGNG
set listsizeはダメポでした(汗

どなたか情報お持ちではないですか?
0165デフォルトの名無しさんNGNG
このデバックツールが一番、最強だけど。
http://www.hashimotoya.jp/butsugu/juzu/kokutan.html

つけてると感情的なしこり、煩悩がはれて、涅槃の境地
でデバックする事ができる。
0166デフォルトの名無しさんNGNG
JDIを分かりやすく紹介してるサイトないっすか?
0167デフォルトの名無しさんNGNG
printfデバッグってさー
実はデバッグ能力がかなり鍛えられるよね

やみくもに挟んでもしょうがないから
バグのありそうなところにprintfを入れる
眼力がつくというか
0168デフォルトの名無しさんNGNG
俺は闇雲にはさみますが何か?
0169デフォルトの名無しさんNGNG
2分探索的に突っ込めばそれほど眼力なんぞ要らない。
0170デフォルトの名無しさんNGNG
若い奴は穴と見たら何でも突っ込みたがるんで困るよ。
0171デフォルトの名無しさんNGNG
>>169
コメントアウトの2分探索はよくやるが
たまにどっち側をコメントアウトしても変な動作するときがあるな。
0172デフォルトの名無しさんNGNG
コメントアウトってなに?
コメント化すること?
コメント化したのを元に戻すこと?
0173デフォルトの名無しさんNGNG
デバッガがないとデバッグできないやつは低脳
0174デフォルトの名無しさんNGNG
こういうスタイルでコードを書くのはどうだろうか。

#define StartS(l) int _s_ = 0, _l_ = l
#define S if( _s_++ < _l_ )

void foo() {
StartS(2);
S    var();
S    hoge();
S    if( ... ) {;
S        hoe();
S    }
0175デフォルトの名無しさんNGNG
>>174
無用なバグを産みそうだなぁ
構文解析きちんとしないと危なくてイヤン
0176デフォルトの名無しさんNGNG
俺的にはC/C++で
#ifdef debug
  hogehoge;
#endif
を知った時とても衝撃的だった
0177デフォルトの名無しさんNGNG
デバッグが便利だからVBは他のどの言語よりも使いやすいとか
逝ってるテストケースも知らないVB厨も馬鹿だな。
0178デフォルトの名無しさんNGNG
DでDebug

debug(hoge) {
  hogehoge;
  ...
} else {
  hugehuge;
  ...
}
0179デフォルトの名無しさんNGNG
バグがあるようなプログラムなんか書くなよ
0180デフォルトの名無しさんNGNG
だからデバッグすんだろ
0181デフォルトの名無しさんNGNG
>>174
そこまでやるなら、なんかツール作った方がいいと思うけど。
0182デフォルトの名無しさんNGNG
あげとこ。

なぜか出てないけどassertは滅茶苦茶重要だと思う。
処理の前に前提条件が満たされているかどうかassert
処理の後に結果が正しいかどうかassert
ちょっと動かせばバグはすぐに見つかる。
0183デフォルトの名無しさんNGNG
引数が 0 のとき発動するんだよな。これでたまに混乱する。
0184デフォルトの名無しさんNGNG
>>182
printf 系コマンドで
「間違ってるよ」
メッセージを表示するよりは、さっさと assert でチェックしる!ということですか?
0185デフォルトの名無しさんNGNG
>>182
製品出した後にassertで転ぶとこを想像するとガクブルでとても使えない。
0186デフォルトの名無しさんNGNG
>>185
製品にassertのこしとくの?プリプロセッサなりなんなりで外したり
できんのかな?
まあ、ユーザー環境でassert引っかかるようなら、そもそも品質問題
だろうけど。
0187デフォルトの名無しさんNGNG
製品で動くassertがあるのかと小一時間
0188デフォルトの名無しさんNGNG
標準では NDEBUG マクロの定義で assert を無効化できるそう。
0189デフォルトの名無しさんNGNG
>>186-187
なんかの手違いでデバッグ版のobjやらdllやらが混じっちゃうかもよ。
品質問題っちゃそれまでだけど。
0190デフォルトの名無しさんNGNG
>>189
んな奴まで知るかボケェ、DEBUG以前の問題じゃ。
0191デフォルトの名無しさんNGNG
いつもテスト直前になってログ出力を埋め込むんだけど、何とか assert と一体化できんかしら。
0192デフォルトの名無しさんNGNG
>>191
assert を自作する。
トッパンから出ているP.J.プラウガーの標準Cライブラリって本が参考になる。
0193デフォルトの名無しさんNGNG
>>183
> 引数が 0 のとき発動するんだよな。

なんて考えてるから、混乱するんだよ。

「式を評価し、結果が false の場合はデバッグ レポートを生成します。」と考えれば何の問題もないと思う。
(まあ、MS のヘルプも悪いけどな。)
0194デフォルトの名無しさんNGNG
結局、assertもprintfも本質的なところでは同じデバッグ手法だからな
0195デフォルトの名無しさんNGNG
>>194
そうか ?
printf は変数 watch で、assert は条件付ブレークみたいなもんだと思うが。
0196191NGNG
>>192
サンクスコ。見ておく。
0197デフォルトの名無しさんNGNG
>>195
(゚∀゚)まあそうなんだけど、結局どっちも
「この変数(条件)がおかしかったらバグだよな」
とアタリをつけながらデバッグする手法だし
0198デフォルトの名無しさんNGNG
>>197
そこまで言うと、普通のデバッグ技法はすべてそれになっちゃうわけだが。
0199182NGNG
>>197
「この変数(条件)がおかしかったらバグだよな」
ってのはそうだけど、ニュアンスが違う。

後からアタリを付けるのではなく、あらかじめそこらじゅうに
assertをばらまいておく。短い関数だとassert行の方が多いくらい。
当然、デバッグを始めてから入れるのでは遅い。
コードを組むときに手当たり次第に入れておく。

敵を探してねらい打ちするのではなく、あらかじめ地雷を
そこらじゅうに埋めておく感じかな?
0200デフォルトの名無しさんNGNG
よくデバッグの開始→プロセスへのアタッチで作業をしていますが、
デタッチができるデバッグツールは存在しますか?
0201デフォルトの名無しさんNGNG
>>200
あるよ。
0202デフォルトの名無しさんNGNG
デバッガのバイトってないの?
あるなら、いくらくらいもらえるのかな
0203デフォルトの名無しさんNGNG
>>202
バグを探すだけの人はデバッガではない。
0204デフォルトの名無しさんNGNG
>203
そんな話はしてないだろ。
0205デフォルトの名無しさんNGNG
>>204
どんな話なの?
0206デフォルトの名無しさんNGNG
>>203はデバッグはバグを探すだけだと思ってるって話。
0207デフォルトの名無しさんNGNG
>>206
私の職場ではGDB(The GNU Source-Level Debugger)を毎日のように起動しているのにバグが修正されません。
誇大広告で訴えるべきでしょうか?
0208デフォルトの名無しさんNGNG
>>207
マジレスすると、バグを修正するにはgccも必要。
パッチ作るだけならgdbだけでもなんとかなるが
0209デフォルトの名無しさんNGNG
デバッガーの使い方はどうやって身に付ければいいのですか?
適当な開設サイトや開設書籍が見当たらない、、、
0210デフォルトの名無しさんNGNG
>209
確か本もあったと思うけど忘れた。
断片的な情報を自分で集めることは必要だろうね。
このサイトなんていいこと書いてる。
ttp://www1.kcn.ne.jp/~robe/index.html
0211山崎渉NGNG
(^^)
0212山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0213デフォルトの名無しさんNGNG
printfから脱却したい
0214デフォルトの名無しさんNGNG
>>213
fprintf に昇格だ
0215デフォルトの名無しさんNGNG
this.debug.setLevel(Debugger.Level.ALL);
0216デフォルトの名無しさんNGNG
http://yahooo.s2.x-beat.com/html/yahooobbs.html
0217名無しさん@EmacsNGNG
ある瞬間のレジスタの値の保存や、
スタックトレース等を行いたいです。
OSはlinuxとWindows2000です。
それぞれの方法を教えてください。
言語はC++でお願いします。
0218デフォルトの名無しさんNGNG
>>217
ICE
0219名無しさん@EmacsNGNG
>>218

OSの権限がないとそういうことできないんすかね?
アプリが落ちたときに、例えばcygwinやwin9xとかだとレジスタやスタックの値が出るじゃないですか。
あれをやりたかったんですが。
スタックトレースぐらいできないですかね?
0220デフォルトの名無しさんNGNG
>>217
> 言語はC++でお願いします。

C++ だけじゃ無理。
インラインアセンブラ使え。
あとスタックトレースは常にできるとは限らないぞ。
0221デフォルトの名無しさんNGNG
>>219
毎秒ごとにファイルに書き出せば、
落ちても、大丈夫。
Windowsアプリなら、楽に実装できますが。
0222デフォルトの名無しさんNGNG
設計を端折ってプログラミングする奴ってたいていデバッグで詰まるよな
0223221NGNG
>>222
僕は設計しないで書く。
いつも、デバッグしまくり。
たまに上手くいくとうれしい。
そんな人は、グローバル変数がやけに多い人です。
あなたはどうです?
0224デフォルトの名無しさんNGNG
バグトラッキング向けのツールって使ってる?
バグデータベースの共有って標準的なスタイルがあるのかな?
0225デフォルトの名無しさんNGNG
>>219
WindowsにはSEHと呼ばれる構造化例外処理機構があり、
アクセスバイオレーション、0除算、ブレークポイントなどの例外を
トラップすることができます。
SEHの機能を使って例外ハンドラを登録しておけば、
例外が発生したとき、レジスタの内容が保存されるので、
例外ハンドラの中から、それを参照するということができたはずです。

MSDNにはどこにレジスタの内容が保存されているかは書かれていなかったと思います。
海外のサイトでSEHを解析しているところがあったと思うので、
それを探してみてください。

C++(Visual C++)では例外処理にSEHを使っていたはずなので、
競合しないように注意が必要かと思います。
0226山崎渉NGNG
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0227山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0228デフォルトの名無しさんNGNG
目立たないスレNo.1です。
0229デフォルトの名無しさんNGNG
量子スレ、あげ
0230デフォルトの名無しさんNGNG
かってにあげないで。そして、またsage。
0231デフォルトの名無しさんNGNG
>>230
あげていいですか?
0232デフォルトの名無しさんNGNG
いやーん。あげないで。
0233デフォルトの名無しさんNGNG
6億円もらったら似非2ちゃんねる作ってもいいよ
0234山崎 渉NGNG
(^^)
0235デフォルトの名無しさんNGNG
俺も最近デバッグについて興味があります。
今まで、
(少しコード書いて→実行→デバッグ)の繰り返しでしたが

最近じゃバグがあんまりでないので、
一気にコード書いて
一気にデバッグやりたいものです。

上の細かいステップじゃ、無駄な実行時間と確認時間が多いのです。

基本的なfprintf(fpやstderr),ASSERT等、
windowsは、上でVCやBCB標準のデバッガを使ってますが
他に何かあればと、

書籍探したのですが
http://www.amazon.co.jp/exec/obidos/ASIN/4756103642/249-4948129-8749118
http://www.amazon.co.jp/exec/obidos/ASIN/4774111252/ref=pd_sim_dp_4/249-4948129-8749118
http://www.amazon.co.jp/exec/obidos/ASIN/4756117457/ref=pd_bxgy_text_1/249-4948129-8749118
http://www.amazon.co.jp/exec/obidos/ASIN/4756102107/ref=pd_bxgy_text_2/249-4948129-8749118
http://www.amazon.co.jp/exec/obidos/ASIN/4756117163/qid=1060413922/sr=1-16/ref=sr_1_0_16/249-4948129-8749118
http://www.amazon.co.jp/exec/obidos/ASIN/4274064166/qid=1060413904/sr=1-1/ref=sr_1_2_1/249-4948129-8749118
http://www.amazon.co.jp/exec/obidos/ASIN/4891001860/ref=pd_sim_dp_5/249-4948129-8749118
やっぱり、あんまりないようです。

とりあえず、
上の2つが気になるので買ってみます。
0236デフォルトの名無しさんNGNG
消えてなくなりそうなので エイジ
0237勢いないので、書籍のリンクでネタ振りしてみたのNGNG
文章にバグがある。
もうだめぽ。

>windowsは、上でVCやBCB標準のデバッガを使ってますが
windows上では、VCやBCB標準のデバッガを使ってますが

修正しますた。

0238デフォルトの名無しさんNGNG
ヤフオクで「デバッグ」で探してみた。


2件しかない(デバッグ関係ない)上に
http://page2.auctions.yahoo.co.jp/jp/auction/b39899423
_| ̄|○ こんなのが3万かよ
0239なんとかUnitNGNG
>>235
最近はあえて細かく
少しテストケース作って、コード書くorリファクタリングして、テストして
ってやり方が主流Sa
0240山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0241デフォルトの名無しさんNGNG
プログラマンダー初心者なんですが
デバッガーってどういう風につくってるんですか
オブジェクトコードをオペコード単位でexecみたいなので読み込むとか?
GDBのソース嫁とかなしねv(^_^)v 
0242デフォルトの名無しさんNGNG
>>241
どうやって作ってるって…
エディターでソース書いて、コンパイラーでコンパイルして、リンカーでリンクする。

↓ここらへんでも読んでみんさい
http://www.ascii.co.jp/books/detail/4-7561/4-7561-1745-7.html
0243デフォルトの名無しさんNGNG
>>242
バカジャネーノ
デバッカーの仕組みを聞いてんだよ
誰もコンパイリングの仕方なんかキイテネーヨ
わからんならでシャバン名や
0244241NGNG
わかった!
たぶん

1,オブジェクトコードを読み込む
2,disアセンブルする
3,ブレークさせたいところにint 3 みたいなのをいれる
4,実行(int 3でとまる)
5,セグメントの変数を見るウマー

ですかね?
0245デフォルトの名無しさんNGNG
>>241
チミの質問が余りに要領を得ないからからかっただけよん。
リンクは本物なんで、その本買って読め。

ちなみにint3使うなんてDOS時代のカビの生えた方法。
0246デフォルトの名無しさんNGNG
>>245
作者?
やけに宣伝するね
前に立ち読みしたけど内容薄いよ
0247デフォルトの名無しさんNGNG
Jonathan B.Rosenbergは日本語が堪能で2chに書き込んでいることが発覚しました。
0248Jonathan B.Rosenberg(偽)NGNG
>>246
なら、お前が>>241の電波な質問に答えてやれ。
0249デフォルトの名無しさんNGNG
ディスアセンブルするんじゃなくて、「特殊なコンパイルをする」
んじゃないのけ?JavaもVC++もそうヤッテルよね?
0250デフォルトの名無しさんNGNG
恋愛話を話しましょう
0251Jonathan B.Rosenberg(偽) NGNG
>>249
全然違う。そのくらいは書いてあるから、私の本を読みなさい。(笑
0252デフォルトの名無しさんNGNG
>>245
>>ちなみにint3使うなんてDOS時代のカビの生えた方法。

じゃあどうやるんですか!!!!!!!!
おねがい教えて!!
じゃないとボク逝っちゃうううううううううううううううううううううううう
ああああああああおまんこでるうううううううううううううう

call___main
movl$LC0, (%esp)
call_printf
int$3#←
movl$LC1, (%esp)

ってやったらexception 〜で終了させられました
0253Jonathan B.Rosenberg(偽) NGNG
>>252
本代をけちる奴には教えない(笑)
0254Jonathan B.Rosenberg(偽) NGNG
>>252
>>243の非礼な態度を詫びるならヒントぐらいはやろう。
0255デフォルトの名無しさんNGNG
>>254
IA32のマニュアル下巻にかいてあったのでもういいです氏ね
アクロバットリーダー バージョン 6.0.糞おめぇ

その本「はじめてよむ486」より1000円たかいやん
イッテヨシ

0256Jonathan B.Rosenberg(偽) の本物NGNG
>>255
吐いた唾飲み込むなよ。その方法は使えない。
0257デフォルトの名無しさんNGNG
俺は、オブジェクトファイルの中のデバッグ情報を取得したいのだが、
どうしたらいいんだ?
なんか、そういうライブラリがあったような気がするけど、
使い方がわからなかったんだよなぁ・・・。

誰か、教えて。
0258デフォルトの名無しさんNGNG
>>257
コンパイルするときアセンブラを出力すればいい
0259デフォルトの名無しさんNGNG
>>258
http://download.microsoft.com/download/0/6/7/0678184e-905e-4783-9511-d4dca1f492b4/Feb99BugSlayer.exe
を解凍してその中のfigure1.bmpみたいなASSERT作りたいです。
0260デフォルトの名無しさんNGNG
>>245
窓はint3でも通ったような気がする。

ちゅーかリリースバイナリに埋め込んどくのやめてくれ。
デバッガで追っかけてると、いきなり止まるんでうざい。
0261デフォルトの名無しさんNGNG
perlのデバッガ作りたいんですが
ようわかりません
たんにevalしてるだけじゃないんですか標準でついてくるデバッガは


自分で書いたのはこんなかんじ
while(<>){
eval $_;
print $_;#標準出力にevalしたコードをprintする
}
0262デフォルトの名無しさんNGNG
>>261
man perldebguts
0263デフォルトの名無しさんNGNG
ハードウェアエミュレータとOSエミュレータを作ればデバッガもすぐできるだろう。


デバッグ入門〜みたいな本とかないかな。オレ自身はデバッガでプログラム覚えたような
もんで、もう10年以上お世話になっているわけだけれども、最近の新人君なんかはなか
なか覚える機会がないようで。サンプル使ってVCでなんか作る分にはデバッグ機能なし
でもなんとかなっちゃうからねぇ。

プログラムを覚える上でもすげー便利だと思うんだけど、あんまりデバッグ関連の書籍が
ないのはやっぱ出来る人でもデバッガ使わないとかいう人が多いからだろうか。
0264デフォルトの名無しさんNGNG
昔。バッチでプロトタイピングしていたとき、Xscriptで
トレースデバッグしていた。今やるならIDEで追いかける、
条件コンパイル向けにデバッグコード書いてVT端末orファイル
出力でやるんだろうけど。あ、lint使うのもアリだな…構文検査だけだけど。

つか…アセンブラレベルのデバッガ。ソースコードなんざsimtel.netやら
freedos.orgに転がっているのだが…。
0265デフォルトの名無しさんNGNG
つか、
lintぐらいは、ざーっとチェックした後、あやしい箇所には
こうじゃないですか? という候補を提示して対話的にささっと
修正できると便利じゃないかと思うんだが。
……俺が知らないだけでありそうな気はする。
0266デフォルトの名無しさんNGNG
gccで-Wall
0267デフォルトの名無しさんNGNG
壁って何よ?
0268デフォルトの名無しさんNGNG
>>267
おとなりに塀が出来たんだってね


 ウォーーーーール!
0269デフォルトの名無しさんNGNG
魚屋さんが驚いた


  うぉっ!
0270デフォルトの名無しさんNGNG
>>268
柔道着ブルマのスレ作ったのはあんたか?
0271268NGNG
>>270
解説キボンヌ

帯ギュは未読
読んだ方がよろしいの?
0272デフォルトの名無しさんNGNG
桜子のエロ同人誌って無いの?
0273268NGNG
>>271
違いましたか。失敬。
帯ギュのコミックの投稿欄にそういうギャグが出てたんで。
0274デフォルトの名無しさんNGNG
モンキーターンでも見れ
0275デフォルトの名無しさんNGNG
最近GDBの使い方が分りかけてきた。これはこれで
Emacsとセットで使うといいかも。
0276デフォルトの名無しさんNGNG
>>273
投稿欄・・・
そんなところまで見なければならないのか
デバッグには観察力が問われるということか
0277268NGNG
バグの再現条件を詳しく確認するのが先か、
とにかくデバッガ上で動作を追ってみるのが先か。
けっこう迷うね。
0278270=273NGNG
名前欄間違えました。
すまぬ>>268

>>277
は本筋に戻そうかな、と思って書いてみた。
0279デフォルトの名無しさんNGNG
そのデバッグセッションで再現してるかわからないのに、動作追っても無駄だと思うが。
0280デフォルトの名無しさんNGNG
acid
0281デフォルトの名無しさんNGNG
保守
0282デフォルトの名無しさんNGNG
これ最強

static void DBG(char* fmt, ...)
{
 char buf[256];
 va_list args;
 va_start(args, fmt);
 vsprintf(buf, fmt, args);
 va_end(args);
 ::OutputDebugString(buf);
}
0283デフォルトの名無しさんNGNG
ヽ(゚∀゚)ノ
0284デフォルトの名無しさんNGNG
>>282
256文字かよ
0285デフォルトの名無しさんNGNG
それ位あっても足りない?
0286デフォルトの名無しさんNGNG
こういうスレは初心者なオレからするとすごくありがたい。

当方、環境はVCだけど、関数の開始に前提条件を満たしているか && 戻り値は有効範囲内か
ASSERTマクロつかってチェックしてます。

>>282のマクロも#ifdef _DEBUGで作って使ってますね。
関数処理の分岐点の進み方とか、気になるパラメータなんかを出力しております。

crtdbg.hの関数の使い方がいまいちわからなくて、効率よさそうなDebug方法知りたいのですが
書籍とかマジでないんですよね。誰か出し惜しみせずにガンガンDebug技術披露してください。

そんで密接な関係のあるテストなんすけど、中身見れたらいいのですが、Win32APIなんかの関数
って非公開だし、わざわざ挙動のテストするのもめんどうなんですよね。
(例えばトップダウンDIBなんてあるけどLoadImage関数は読み込めないとか)
win32APIスレもあるんですが、あっちは質問スレなのでどうかと思うし、こっちでDebug技術と関数
テストっぽい内容話し合ってもいいかなと思うのですが、却下でしょうか。

単発っぽい内容よりある種類の関数と引数の対応表とでもいうか、自分でやったことあるテストを思い切って
公開してみてほしいかもしれません。
0287デフォルトの名無しさんNGNG
0xXXXXXXXXの命令が0xYYYYYYYYのメモリを参照しました。
みたいなダイアログが出た時、ソースのどの部分かを特定するにはどうしたら
いいんですか?
詳しく説明されてるサイトなど教えてください
0288デフォルトの名無しさんNGNG
>>286
ソフトウェアテストに関する書籍は出てるでしょ。

あとassertマクロはチェックを期待するのはやめたほうがいいです。
せいぜいコメントのつもりでいれましょう。
(assertでなくてASSERTってのがあるのかな?)
0289デフォルトの名無しさんNGNG
>>287
リンカのマップファイルをみればいいのでは。
あるいは実行ファイルからラベルのアドレスを抽出するか、逆アセンブル
すれば分かる。
0290デフォルトの名無しさんNGNG
>>288
VCにはASSERTとASSERTEマクロがCランタイムのassertと同じ役割を果たします(後者は評価式を表示)
VCのデバッグバージョンだと_DEBUGが定義されるのでそのときのみ実行される仕組みになってます。
なのでReleaseバージョンのオーバーヘッドにならずに、コードを書きながら埋め込めるので、
自分のライブラリなんかも何か挙動がおかしくなったりするかもしれないので使うときはデバッグ版使ってたりします。
デバッグブレークもしてくれるので重宝しているのですが、やはりコメントのようなものかもしれません。
# もっといい引数チェック法あったら教えてください

あと、heapのポインタをうけとったときにサイズも引数で受けるのですがheapポインタのバッファって
どうやって計算するんでしょうか。
やはり、(heapの要領 == size * sizeof(TYPE))で評価しておいたほうが妥当かな、と思うわけです。

ついでに、ソフトウェアテスト法というより、テスト結果が知りたかったりします。
0291デフォルトの名無しさんNGNG
>>288
>あとassertマクロはチェックを期待するのはやめたほうがいいです。
これはなにか理由があるのでしょうか?
0292デフォルトの名無しさんNGNG
>>289

もう少し詳しくおながいします
0293デフォルトの名無しさんNGNG
>>291
もしかしたらポインタの値をチェックするときNULLでなければ通ってしまうということかもしれない。
不定な値のままだと通っちまう、0じゃないから
0294デフォルトの名無しさんNGNG
そもそもassertはデバッグ時に消える運命だろ?
元々チェックしなきゃならんものをassertに入れる方が間違いでは。
0295294NGNG
s/デバッグ時/リリース時
0296デフォルトの名無しさんNGNG
>>291
テストと言うのはリリース版でやるものです。
リリースするものと違うものをテストしたって意味無いから。
多分その時はassertは無効になっている(してる)。

ただ、バグの原因を探るためにはデバッグ版が使えるので、その時にはassertがかかって
くれるかもしれない。だから入れないより入れた方が役に立つ。
0297デフォルトの名無しさんNGNG
>>292
コンパイラとOSは?
VC++とかだと、リリース版でもデバッグ情報ありにしてコンパイルすれば
場所が分かるじゃん。(当てになるんだっけ?)

GCCとかだと、gdbを使う。

情報が無ければ>>289としかいいようがない。
0298292NGNG
VC++です
明日試してみます
もう寝ますので明日の朝までにもうちょっと具体的に書いといてください
0299デフォルトの名無しさんNGNG
>>297
リリース版にデバッグ情報埋め込むよりも、MAPファイルを出力してそこから割り出すのがベスト
0300デフォルトの名無しさんNGNG
テストとデバッグは分けて考えろ。
テストして欠陥を見つける。
欠陥を修正するのがデバッグ。

TDDのUnit Testは、ちょっと違うけどな。
TDDだと、欠陥の修正=開発。

アサーションはプログラマの意図の表明。
早めに欠陥を見つけるためには役に立つこともあるが、
デバッグに使うものじゃない。
むしろ、ドキュメンテーションの一部と考えたほうがいい。
0301デフォルトの名無しさんNGNG
ハァ? TDDだろうがなかろうが欠陥の修正はデバッグ
0302デフォルトの名無しさんNGNG
>>300はテストの失敗を欠陥と呼んでしまったのが敗因だな。
0303デフォルトの名無しさんNGNG
>>302
むしろ "デバッグ" と "開発" で区別して考えている時点で負けている
0304デフォルトの名無しさんNGNG
SingleStepについて語ってください。使い方ワカンネ('A`)
0305デフォルトの名無しさんNGNG
デバッグ報告書書き方を教えてくららい。
ルールがなくて後からこれやって言われます。
なにしていいかわからんのです。
コーティング&テストしながらなんで動作はしているんだけど
テストしているときってのがデバッグみたいなもんじゃないですか
んで何を入力したかをメモとってないから
またもう一度テストデータ入力して二度でま

ちょこちょこコード変更する段階だとメモとる気がしないんだよな。
やっぱり先に動作からテストパターンを考えてからやればいいのかな

なんか自己完結してるようなきもするが。
どんなデバッグの仕方してますか?
0306デフォルトの名無しさんNGNG
オーバーフローのチェックって
こんなんでいいの?

単純に比例関係の計算ルーチンa(x)をしらべる
x=0;
//正の数
for(i=-0;i<33;i++)
{
Py[i]=a(x);
x=x+1;x=x<<1;
}
//x=32bitALL1
//負の数
z=1;
for(i=-0;i<31;i++)
{

Ny[i]=a(x);
x=x+z;z=z<<1;
}

配列の中身の正負が途中で変わってたらオーバーフロー?
0307デフォルトの名無しさんNGNG
>んで何を入力したかをメモとってないから
>またもう一度テストデータ入力して二度でま

呼び出しテストプログラムから実行させて確認してないのか?
例えば int func() をテストしたいなら
test_xxxx()
{
int ret=func(パラメータ);
if(ret==エラー){
えらーになりましたよ
}else{
大丈夫でした
}
}
0308306NGNG

「C言語 入門書の次に読む本」を立ち読みして
関数ラッパという物を知りました。
目からうろこです。

しばらくいろいろデバッグ用のコード作ってみようと思います。
一度つくれば先まで使えるはずですし。
あいにく時間だけはあるので。

0309デフォルトの名無しさんNGNG
デバッガの動作原理について教えてくれ
0310デフォルトの名無しさんNGNG
「0x○○○の命令が0x×××を参照しました」みたいなエラーメッセージが出ることが
あるじゃないですか。
その0x○○○が、ソースコードのどの位置に該当するかを調べる方法を詳しく書いたサイト
とかないですか?
mapファイルを作成してどうこうという説明をどこかで見かけたんだけど忘れてしまいました。
0311デフォルトの名無しさんNGNG
クズめ…。
0312デフォルトの名無しさんNGNG
デバッグとすこしずれますが、Cで、各ルーチンの処理時間を
簡単にトレースできるツールって無いですか?
0313312NGNG
自前でやろうとすると、
�@全ての関数内で、実行時間を保存するstatic変数を定義する。
�A全ての関数の引数に、フラグ用の変数を一つ追加する。
�B通常は�Aのフラグを0にして各関数を呼ぶ。全ての関数の最初と
  最後にtimes()等を呼んで、その関数の処理時間を�@の変数に足す。
�Cプログラム終了時に、�Aのフラグを1にして全ての関数を呼び出し、
  �@の変数の内容を各関数内で出力させる。

という方法は思いつくのですが、100個近い関数に全てこれを行うと、
新しいバグを作りそうなので、もう少し簡単な方法はないでしょうか。
0314デフォルトの名無しさんNGNG
purofaira
0315312NGNG
>314
ありがとうございます。
(一瞬悩みましたが、ローマ字表記ですね。)
0316312NGNG
皆さん普通に使うものなのですね。profiler.
"gprof" とか、私のlinuxマシンにも入ってたし…

一応、"処理時間"とかで一生懸命検索してみていたのですが、
初心者にとってはキーワードを知らないというのが致命的だった
みたいです。助かりました。
0317デフォルトの名無しさんNGNG
>>316
「プログラム」「処理時間」「関数」くらいで出てくるが
本当に調べたのかと
小1時間も付き合う気はしない
0318デフォルトの名無しさんNGNG
デバッグに必要なもの:
週休0日で平均睡眠時間3時間でも稼働できる体力
他人の大ボケなミスでも笑って直せる忍耐力
給料にはなんら反映されないと知りつつも頑張れる奴隷根性

こんなもんかね
0319312NGNG
>317
ご批判ありがとうございます。
日常生活では、歯に衣着せず批評してくれる人は
あまり居ないので、大変ためになります。

いままでデバッグツールを使いこなさずに(存在すら知らずに)
効率の悪いやり方をしていたんですが、"valgrind" と "gprof"
を使ってみて、今までいったい何をやってたんだろう、という
感じです。ここの皆さまのおかげです。
0320デフォルトの名無しさんNGNG
VisualStudioが最強のデバッガ。
0321デフォルトの名無しさんNGNG
age
0322デフォルトの名無しさんNGNG
騎乗位デバッグ
0323デフォルトの名無しさんNGNG
すごいね。
このスレだけ10年前みたいだ
0324デフォルトの名無しさんNGNG
メモリ上でCreateMutexのコードセグメントを見つける方法を教えてください
0325デフォルトの名無しさんNGNG
または実行ファイルのCreateMutexのコードセグメントを見つける方法を教えてください
0326デフォルトの名無しさんNGNG
何がしたいのか分からないが、kernel32.dll を逆アセンブルすればいいんでは?
0327デフォルトの名無しさんNGNG
0328デフォルトの名無しさん05/03/17 03:55:48
劇的に疲れた
0329デフォルトの名無しさん05/03/17 09:56:53
乙
0330デフォルトの名無しさん2005/04/06(水) 15:59:51
putsとprintfとfprintfってどこがちがうんですか?
0331デフォルトの名無しさん2005/04/06(水) 22:24:54
関数名が違う
正常な目を持つ人なら見れば分かる
0332デフォルトの名無しさんNGNG
グローバルの new と delete を
デバッグバージョンに再定義する。
0333デフォルトの名無しさん2005/04/08(金) 17:36:04
>>31
何で包茎が本の表紙になってるんですか?
0334デフォルトの名無しさん2005/04/08(金) 17:38:18
>>59
2週間も雇えるのか…
その計算でいくと1ヶ月50万いかないぞ?
0335デフォルトの名無しさん2005/06/17(金) 18:28:11
newで失敗したときのテストをしたいのですが、一体どうすればよいのでしょうか。
負荷ツールを使うとOSも重くなるのでうまく動作しません。
0336デフォルトの名無しさん2005/06/17(金) 18:30:16
>>335
言語は?
0337デフォルトの名無しさん2005/06/17(金) 18:34:11
>332
0338デフォルトの名無しさん2005/06/18(土) 07:57:27
VC++ Ver6.0にてゼロ除算の箇所をデバックしたいのですが、
すみませんが方法を教えてください。
0339デフォルトの名無しさん2005/06/18(土) 17:27:30
>>338
何がわからないのかね?
03403382005/06/18(土) 21:10:05
ソースのどこかで、

double a = 100
double b = 0;

a = a / b;

が発生していると予測できるのですが、
その場所とタイミングが不明です。

メモリーリークは、BoundsCheckerでチェック可能ですが、
ゼロ除算やオーバフローについても
簡単に見つける事はできないでしょうか?
0341デフォルトの名無しさん2005/06/18(土) 21:41:54
CPUのフラグを見る
0342デフォルトの名無しさん2005/06/18(土) 21:46:01
>その場所とタイミングが
古典的に
ログ出力
0343デフォルトの名無しさん2005/06/18(土) 22:09:52
>>340
除算なんてそんなに出てくる計算じゃないよ。
ソースの中をすべて"/ "(斜線とスペース)で検索かけてチェックしろ。
0344デフォルトの名無しさん2005/06/19(日) 04:18:35
#ifndef DEBUG
#define DIV(a,b) (a/b)
#else
#define DIV(a,b) (b==0?TRACE(_LINE_):(a/b))
#endif
0345デフォルトの名無しさん2005/10/27(木) 18:21:57
デバッガーにバグがあるのはごく普通でしょうか?
0346デフォルトの名無しさん2005/10/27(木) 20:20:19
>>340
  #include <float.h>
  int newmask = _EM_ZERODIVIDE;
  _controlfp(0, _MCW_EM);  // すべての浮動小数点例外を有効にする
03473462005/10/27(木) 20:21:21
あれ、2行目関係ないや。
03483382005/10/27(木) 23:42:40
>>346
サンクス デバッカ時にゼロ割りで止まってくれるようになったよ。

この知識はどういう方法で習得しているの?
MSDNヘルプ?
03493462005/10/28(金) 11:16:50
4ヶ月も前のにレスしちゃったよ!
…と思ったら、役にたったようで何より。

>MSDNヘルプ?
「浮動小数点 例外」でググったら
_control87 ってのが見つかったから
後は MSDN ヘルプで。
0350デフォルトの名無しさん2005/11/06(日) 21:28:30
寝ながらデバッグ
頭の中でプログラムが勝手に走り出す
問題箇所でコードが止まる

翌朝・・・忘れてる
0351デフォルトの名無しさん2005/11/08(火) 18:11:12
夢の中では動いたんです!
夢の中ではバグ取れたんです!
0352デフォルトの名無しさん2005/11/16(水) 19:20:49
$./configure
$make
でインストールしたものは、デバッグが可能なのでしょうか?

gcc -g hoge.c

gccではなくmakeを使ってコンパイルしたものでは勝手はどう変わるんでしょうか?
0353デフォルトの名無しさん2005/11/16(水) 19:30:49
ひと、いますか…?
0354デフォルトの名無しさん2005/11/16(水) 21:01:25
移動します
0355デフォルトの名無しさん2005/11/17(木) 07:50:41
>>352
makeファイルの記述によるでしょう。
0356デフォルトの名無しさん2005/11/27(日) 18:12:50
>>352
./configure CFLAGS='-g -Wall' でびるど。
古いconfigureだと、env CFLAGS='-g -Wall' ./configure とか、
それでも効かなきゃconfigure後のMakefileを直接いじる。
0357デフォルトの名無しさん2005/12/10(土) 18:22:13
テスト運営が好きって人、居る?
私結構好きなんですけど。
今、制作は制作会社に、デバッグはテスト専門会社に依頼してるんだけど、
�@テスト計画立てる
(最初から全部の要素が実装されるわけないし、製品によって重点的にテストするべき部分は違うので、
テストする順番を考え、場合によっては制作会社に実装順をリクエストしたりする)
�Aテスト用チェックシートを作る
このチェックシートの出来が悪かったり、意味不明だったりするとテスト効率が下がるので気合が入る
(他人が考えた仕様を理解するのは結構重労働だが)
�Bデバッグ部隊用に仕様書への補足資料を作ったり、バグを制作会社に報告して直してもらうのが楽しい
スケジュールどおり順調に納品できるとホントうれしいですよね・・・
0358デフォルトの名無しさん2005/12/10(土) 22:00:40
お金にならないことはなるべくしたくない
デバッグは金にならない
ゆえにデバッグしない
0359デフォルトの名無しさん2005/12/10(土) 22:08:49
>>358
そして客のところでバグ発覚してかえってコストがかさむ、と。

デバッグとかテストは金にならない仕事じゃなくて、
余計な金をかけないための仕事。
0360デフォルトの名無しさん2005/12/10(土) 22:41:39
テストに向く人とそうでない人ってのは確かにいる。
0361デフォルトの名無しさん2005/12/11(日) 01:50:09
設計にしろ、プログラミングにしろそれはあるだろ。
0362デフォルトの名無しさん2005/12/12(月) 05:37:55
スタック構造壊されてるときどうしてるん?
0363デフォルトの名無しさん2005/12/12(月) 23:07:27
>>362
そこまで気づいてるなら、やるべきことはそう多くないと思うが。
0364デフォルトの名無しさん2005/12/24(土) 17:44:21
C/C++で、.oファイルの関数について、プログラム実行時に
どんな関数が順番に呼び出されたかを知る方法ってありますか?
ltraceは共有ライブラリ、straceはシステムコールの呼び出しを
知ることができますが、.oファイル内の関数呼び出しは分かりません。
イメージ的には、全関数の定義の先頭に printf("%s\n", __func__);
を挿入するのと同じことをもっと楽にできないかという感じです。
0365デフォルトの名無しさん2005/12/24(土) 17:55:11
>>364 プロファイル
0366デフォルトの名無しさん2005/12/24(土) 23:41:28
Solaris なら DTrace も使えるけど、Linux かな。
03673642005/12/25(日) 01:14:07
>>365
gprofは調べていたのですが、順番は出力できないようです。
内部的には、いつどんな関数を呼んだかを記録しているとは
思うのですが…。
>>366
すみません、書き忘れました。Linuxです。
0368デフォルトの名無しさん2005/12/25(日) 03:42:03
>>364
gccなら-finstrument-functions使えば
ファンクションコールトレーサーが簡単に作りこめる。
http://www-06.ibm.com/jp/developerworks/linux/050722/j_l-graphvis.html
このへんに詳しい。
03693642005/12/28(水) 01:47:44
>>368
やってみたところ、順番に呼び出された関数名を取得できました!
gccのそのオプションも知らず、勉強になりました。
ありがとうございます。
0370デフォルトの名無しさん2006/01/03(火) 22:34:44
デバッグ統括業務(テスト会社への指示出し)って、
転職活動用の職務経歴書に書く場合は、どういう言葉で書けばいいの?
「ソフトウェア品質管理業務」でいいのかな?
「デバッグ業務」だと、「デバッガ」と解釈されそうなので悩む・・・
0371デフォルトの名無しさん2006/01/03(火) 23:40:34
>>370

「デバッグ統括業務(テスト会社への指示出し)」
0372デフォルトの名無しさん2006/01/04(水) 00:02:19
悲惨な部門だなw
0373デフォルトの名無しさん2006/01/04(水) 00:07:40
>>370
「ソフトウェア品質管理業務」でいいと思うんだが…
0374デフォルトの名無しさん2006/01/04(水) 01:20:10
「ソフトウェア品質管理業務」って書いてあるから、デバッガの募集だと思ってましたよー。
0375デフォルトの名無しさん2006/01/04(水) 18:54:48
>>373
同意。

まあ、>>374みたいな印象持ってる奴が多いのも残念ながら事実だけど。
製造系でQCと製品検査を同一視する奴もいるし。
0376デフォルトの名無しさん2006/01/10(火) 13:22:58
バグ見つけてくれる人は神様です
0377デフォルトの名無しさん2006/01/20(金) 18:30:02
バグは見つける! 見つけるが……
その時と場所の指定まではしていない。

つまり……我々がその気になれば、

『バグの発見は製品リリース後に客先で』

ということも可能ということだ。
0378デフォルトの名無しさん2006/01/27(金) 15:38:27
Eclipse + CDB でC/C++の開発をしてるんだけど、
fork()した後の子プロセスのデバッグ方法がわからん・・・
親プロセスではなく子プロセスのステップ実行をしたいのに…orz
0379デフォルトの名無しさん2006/02/04(土) 11:48:41
>>376
客先で見つけるSさんは悪魔です!
0380デフォルトの名無しさん2006/04/22(土) 19:24:05
http://d.hatena.ne.jp/yaneurao/20060423#p1

>いま他人のプログラムをデバッグしている。時間がもったいないので目視のみだ。
>私の場合、小さなクラスならば、目視のみでほぼ100%デバッグできる。

「100%バグが取れた」と無邪気に確信でき、平気で吹聴できる辺りが痛杉。
0381デフォルトの名無しさん2006/04/22(土) 21:21:59
>>380
「小さいクラス」なら机上デバッグでほぼ問題とれるっしょ
机上デバッグせずにいきなりデバッガ起動したりする馬鹿は論外だけど
0382デフォルトの名無しさん2006/04/23(日) 01:19:29
>>380の人、日記全体的に文章が高圧的だなぁ。この人って凄いの?
0383デフォルトの名無しさん2006/04/23(日) 01:33:18
そりゃウォークスルーだけで見つかる初歩的CDバグも数多いけれど、
「見つかったバグが修正できている」かはテストするまでわからんし、
ましてや「100%取れた」なんて発言は潜在バグを全部把握してる神宣言ですか。
0384デフォルトの名無しさん2006/04/23(日) 01:50:03
凄いかどうかは判らないけれど、「周囲に凄いと思われたがっている切実な願い」は伝わって来るな。
0385デフォルトの名無しさん2006/04/23(日) 13:06:13
誰かとおもったら屋根裏か。
受注のゲーム屋社長で、修羅場経験値だけは多い現場たたき上げ系。
何冊か本も書いてるが、立ち読みした限りでは教育者の才能はない。
凄いかといえば凄い部類には入るんだろうが、見て分かる通り、率直にいってウザい。
最近は若手の取り巻きが増えて調子に乗ってるせいか、ウザさ倍増中。

ただまあ、言ってること自体は別段普通のことだと思う(100%はさすがに吹きすぎだが)。
最近の若手は高速な開発環境でtry and errorに慣れすぎてるせいで、
机上(脳内含む)設計なしでいきなりコード突っ込む奴が多いのかもしれん。

設計ができない奴はテストケースも作れないから、まともなモノは作れやしない。
そんな奴とっとと首切れと言いたいけどな・・・。
0386デフォルトの名無しさん2006/04/23(日) 14:13:47
× try and error
○ trial and error
△ トライアンドエラー
○ 試行錯誤
0387デフォルトの名無しさん2006/04/23(日) 17:01:32
try me
0388デフォルトの名無しさん2006/04/23(日) 21:27:52
おれなんざクラスどころか目の前の3行の中のミスも見逃すぜ。

とはいえひらめいたアイディアをいきなり書き始めなくなったのは
多少大人になったっちゅーことか。時間に余裕があるときは三日
くらい寝かせてた頭の中で転がしてから作り始める。

大抵もっといいアイディア(もしくはそんなことしなくてもいい理由)
が浮かぶね。
0389デフォルトの名無しさん2006/04/23(日) 21:31:41
テストケースっつーのは専門用語でよくわかん無いけど、実装した部分に対して
エラーさせるケース、正常動作するケースをコーディングの前か後ろで用意して
ころあいを見計らって動かしたりするね。

で、エラー部分と正常部分のアウトプットが正しいことは確認してる。
そんなの当たり前か
0390デフォルトの名無しさん2006/04/24(月) 02:13:22
>>385
要するに中小下請けのデジタル土方なのね。ショボ。
0391デフォルトの名無しさん2006/04/24(月) 03:41:59
>中小下請け
違うでしょ?
0392デフォルトの名無しさん2006/04/24(月) 06:47:20
ドカタってのは、
 ・施工者と別の組織により
 ・現場毎に集められ
 ・単純労働
 ・日給月給

労働なので能力、成果はあまり問われない。
請負のように納期・性能を守れない場合のペナルティはない。

土方と書くと 幕末の剣客の事となるので注意
0393デフォルトの名無しさん2006/04/24(月) 22:09:48
>土方と書くと 幕末の剣客の事となるので注意
0394デフォルトの名無しさん2006/04/25(火) 00:13:26
「目視だけでデバグ」と聞いて
目から怪光線を発してPCを操作してる図が浮かんで
AA化しようとしたが挫折した…。

 ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∧ ∧
   (  ,,)
  ./  |
  (___/
 /
0395デフォルトの名無しさん2006/06/03(土) 05:22:44
テストというと、ブラックボックステスト、ユニットテストが基本のようですが、
デバッグ技法として内部構造に着目したテストをやってる人っています?
例えば、内部データ構造の矛盾(ユニーク前提のデータが重複していたり)を検出したりとか。

文献とかでこういうののノウハウを扱ったのがあればいいんですが。
0396デフォルトの名無しさん2006/06/03(土) 23:12:03
テストとしてはやったことないけど、トラブルシューティングの一環として
監視タスク仕込んだりしたことはあるな。文献とかいうレベルじゃないが。
0397デフォルトの名無しさん2006/06/03(土) 23:44:26
>>395
おまいが求めてるのとは違うだろうけど、
ttp://www.tietew.jp/cppll/archive/8105
こんなのもあるぞ。
0398デフォルトの名無しさん2006/08/12(土) 22:15:41
実行中のポインターやメモリーのバグをログに吐き出すようなツールかライブラリで安いものってありますか?
DevPartnerとかInsure++は高くって買えん
0399デフォルトの名無しさん2006/08/13(日) 00:08:30
>>398
GlowCodeの体験版使ってみたことあるけど結構よかった。
04003982006/08/16(水) 03:36:32
GlowCodeの体験版使ってみましたが、メモリーに関してはメモリーリークの検知しかできないようです。
配列をオーバーしたアクセスとか、初期化されていないポインターのアクセスを検知するようなツールはないでしょうか?
0401デフォルトの名無しさん2006/08/16(水) 03:58:07
VirtualAlloc法
0402デフォルトの名無しさん2006/08/18(金) 13:59:59
linuxならvargrind
0403デフォルトの名無しさん2006/08/29(火) 21:48:39
それをいうならvalgrind
■ このスレッドは過去ログ倉庫に格納されています