トップページ⇒tech
49コメント16KB

デバッグなら俺に任せろ!

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
ちょっと暇になったから、デバッグしてやるぜ。
不安なコードとかあったら、投げてみ。
色々指摘してあげよう。

第3者の目ってのはバグの発見に非常に役立つと思われ。

つーわけで、C/C++,C#でヨロ
その他のコードでも他の人が見てくれるかもよ。
0002デフォルトの名無しさんNGNG
任せられん
0003デフォルトの名無しさんNGNG
int main(void){
printf("Hello World")
}

あっているとおもうんですが なぜかえらーがでます!!!!
げいいんがわかりません 教えてください!!!!!!!!!
0004デフォルトの名無しさんNGNG
>>1はDEBUGコマンドをつかったことがないのではないだらうか
00051NGNG
>>3

#include <stdio.h>

int main(){
printf("Hello World");
return 0;
}
0006デフォルトの名無しさんNGNG
>>5
もう一行改行すべきだな。細かいことだけど。
0007デフォルトの名無しさんNGNG
>>5
mainでreturn 0は邪道。
00083NGNG
>>5でコンパイルしたら、コンパイラに怒られました!
ちなみにCygwin上のgccです。教えてください!それとも>>1さんはBCCしかつかったことがないんですか?
0009デフォルトの名無しさんNGNG
ちゃんと拡張子.cにした?
だめなら

#include <iostream>

int main()
{
std::cout << "Hello World\n";
return (0);
}

これは?
.cppね。



00101NGNG
>>8
FreeBSDのgccとVC++を使っておるぞ
BCCなんて使ってない。
0011デフォルトの名無しさんNGNG
C の初心者です。事情があって、ロックやアンロックを使わずに相互排他をやらなくてはならなくなったので、
その為の関数を作ったのですが、先輩から「バグがある」と言われてしまいました。
どこが悪いのか検討もつきません。教えてください。

int flag1 = 0, flag2 = 0, turn = 1;

void a(void)
{
    while (1){
        for (flag1 = 1, turn = 2;flag2 && turn == 2;)
            ;
        critical_area_a();
        flag1 = 0;
    }
}

void b(void)
{
    while (1){
        for (flag2 = 1, turn = 1;flag1 && turn == 1;)
            ;
        critical_area_b();
        flag2 = 0;
    }
}
0012デフォルトの名無しさんNGNG
int main()
{
 return 0;
}

これだけなのにうごきません。
0013デフォルトの名無しさんNGNG
>>11
一例として、a()を呼び出し、直後にb()が呼び出されたとき、
flag1=1;

flag2=1;
turn=1;

turn=2;
の順に実行されたらどうなりますか?
0014デフォルトの名無しさんNGNG
>>13
a は flag2 && turn == 2 でブロック。
b は flag1 && turn == 1 から抜ける。
↓
critical_area_b();
flag2 = 0; //b
↓
a は flag2 && turn == 2 から抜ける。
critical_area_a();
flag1 = 0;
でつ。
0015デフォルトの名無しさんNGNG
>>11
pertersonのアルゴリズムをやろうとしてんだったら
それで正しいような気がする。ていうかturnの使い方をぎゃくにしろよ。
なんでそんな分かりずらく書くん?
0016デフォルトの名無しさんNGNG
volatileがない
0017デフォルトの名無しさんNGNG
頼みたいコードはたくさんあるんだが・・・
ソース公開したくないし・・・w

うーむ、迷うなぁw
0018デフォルトの名無しさんNGNG
あてにするな
0019デフォルトの名無しさんNGNG
考えるな
迷うのは心の贅肉
感じるんだ
0020デフォルトの名無しさんNGNG
来た!見た!買った!
0021デフォルトの名無しさんNGNG
任せた!(age)
0022名無しさん@そうだ選挙に行こうNGNG
ageだな
0023デフォルトの名無しさんNGNG
デバッグはお任せします。
作ることだけに専念したいので。
0024デフォルトの名無しさんNGNG

ここで質問していいのか分からないんですけど、 Insert キーのプログラムを作りたいんです。
  もしInsert on ならカーソルの横文字がの一つ右へ移動してそこに新しい文字を出すみたいな。
  例
     ABCDEF上に カーソルがCとDの間にあって Bを打つと ABCBDEF (Insert on 時)
    
    (Insert off 時) ABCDEF→ABCBEF。
  
     MOV AH,12H
INT 16H
AND AL,100000000B
JZ exit

最初に↑のように打って INSERT KEYがONかOFFかを確かめた後、
    どうやってこのプログラムを作ったらいいんでしょうか?

    
0025デフォルトの名無しさんNGNG
下記のようにコーディングして、テキストファイルを読み込むと、
当然読み込んだデータの末端に余計な改行が入るのですけど、
不要な改行を付加することなく、スマートに
テキストファイルを読み込む方法はないでしょうか?

Open TextFilePath For Input As #1
Do Until EOF(1)
Line Input #1, Temp
ReadData = ReadData & Temp & Chr(13) & Chr(10)
Loop
Close #1
Text1.Text = ReadData
0026デフォルトの名無しさんNGNG
>>24
ここへ行け
http://pcsoft-os.ten.thebbs.jp/1080442856/e10
0027デフォルトの名無しさん05/02/05 10:30:16
age
0028デフォルトの名無しさん2005/06/30(木) 23:23:03
void data_input(int a);
int a_data;

int main()
{
int i,select;

for(i=0; i<3; i++) {
scanf("%d",&select);
data_input(select);
}
}


void data_input(int a)
{
if(a==1){
scanf("%c",&a_data);
return;
}
return;
}
0029デフォルトの名無しさん2005/09/01(木) 19:53:31
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/892.txt
カレンダークラスの動作チェックと最適化(デバッグしながら作ってたら妙なコードになってしまいました)
お願いします。
0030デフォルトの名無しさん2005/09/01(木) 20:24:14
>>11 while (1) の1は何の1ですか?
0031292005/09/01(木) 20:25:28
>>30
while(true)無限ループ
0032デフォルトの名無しさん2005/09/01(木) 20:28:35
>>31 では、この関数はいつ抜けるのですか?
0033292005/09/01(木) 20:33:08
>>32
知らんけど省略されてるとこでif()break;でもしてるんじゃない。
0034デフォルトの名無しさん2005/09/01(木) 20:36:35
>>33 それだと、 flag1 = 0; と flag2 = 0; に意味はあるのでしょうか?
0035デフォルトの名無しさん2005/09/01(木) 20:39:07
>>11 for文で何をやりたいのかも分かりません
0036292005/09/01(木) 20:49:49
>>35
省略じゃなかった。for文はロック。a()b()はそれぞれ別スレッドから呼んでいるのかな?
0037デフォルトの名無しさん2005/09/01(木) 20:56:45
>>36 ありがとう。他の部分のコードも見てみたいけど、>>11氏はいないそうですね。
0038デフォルトの名無しさん2005/09/01(木) 22:40:37
>>29
> int DofM[13];
いきなり意味不明の略語。しかもpublic。
Day of monthかなんかだと推測はできるが、なぜ13個あるのだろうか?コメントは一切ない。
Init()とSetup()があるのはどういう意味だろう?当然のごとく何の説明もない。
int GetWeek(int y,int m,int d); y,m,dからWeekを取得するらしい。意味がわからない。
void Now(); たぶんこの関数を呼ぶとオブジェクトを現在の時刻に初期化するのだろう。
こういうのってstaticにしてCalender型を返すようにするのが定石だと思うけど違ったっけ?

関数の糞実装に関しては特にコメントしない(読みたくないので)
0039292005/09/01(木) 23:09:50
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/893.txt
コメントを付け足しました。

//ad日進める
void operator+=(int ad);
//差は何日か
int operator-(Calendar& rh);
ここら辺が不安です。

operator+=()
の//ここら辺怪しい//なぜかSum2=-1になってしまった
operator-()
の//ret=sum+(prgny_this-prgny_rh);にしたかった
これがよく分からないです。

>>38
DofMは月が1〜12の範囲なのでDofM[0]はダミーです。
p.s.
非常に失礼しましてごめんなさい。
0040デフォルトの名無しさん2005/09/01(木) 23:17:47
//初期化
void Init()
{
 DofM[0]=0;
 DofM[1]=31;
 DofM[2]=28;
 DofM[3]=31;
 DofM[4]=30;
 DofM[5]=31;
 DofM[6]=30;
 DofM[7]=31;
 DofM[8]=31;
 DofM[9]=30;
 DofM[10]=31;
 DofM[11]=30;
 DofM[12]=31;
}

こんな風にしてくれないと読みにくいわけよね。
0041デフォルトの名無しさん2005/09/01(木) 23:23:31
>>39
・同じ閏判定のコードがあちこちにあってキモイ
・DofMをpublicにする意味は?
・Weekは「曜日」という意味ではないと思うんですが
0042292005/09/01(木) 23:33:57
//差は何日か
int Calendar::operator-(Calendar& rh)
{
//省略
  //閏チェック
  if(((ty%4==0)&&(ty%100!=0))||(ty%400==0)){DofM[2]=29;add=366*sgn;}
  else{DofM[2]=28;add=365*sgn;}
  //結果の年になったか
  if(nowy_this==rh.Year)break;
  else
  {
   //1年分加算
   sum-=add;
   nowy_this+=sgn;
  }
 }
 //日数を返す
 ret=sum+(prgny_this-prgny_rh);
//省略
これは出来ました。

//ad日進める
void Calendar::operator+=(int ad)
{
//省略
 //なぜかSum2=-1になってしまった
 sum2=-1;k=1;
//省略
これはよく分かりません。
0043292005/09/01(木) 23:41:33
>>40
済みません。
>>41
・DofMをpublicにする意味は?
ありません。

sum2=-1;
なんでだろう?
0044292005/09/02(金) 00:02:25
>>41
・DofMをpublicにする意味は?
あ、一月づつ(壁にかける)カレンダー表示の時に一月の日数が要る。と今思った。
0045292005/09/02(金) 02:48:51
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/896.txt
助言を参考に直しました。

//ad日加算
Calendar Calendar::operator+(int ad)
{
//省略
 //閏チェック
 if(IsLeap(ty)){DofM[2]=29;add=366*sgn;}
 else{DofM[2]=28;add=365*sgn;}
 //結果の年になったか
 if((0<sgn)&&((ad-sum)<add))
 {
  //なぜかSum2=-1になってしまった
  sum2=-1;k=1;
//省略
ここは相変わらずです。
0046デフォルトの名無しさん2005/09/03(土) 12:52:48
すいません、500ファイル、10万行を超えるプログラムが
Releseでビルドして実行ときのみ突然止まります。
どうしたら直りますか?
0047デフォルトの名無しさん2005/09/03(土) 13:05:50
メモリの増設っきゃないだろうね。
それとも一気に500ファイルコンパイルしようとするんじゃなくて
50ファイルくらいに制限するとか
0048デフォルトの名無しさん2005/09/03(土) 13:09:27
いや、止まるのはビルドじゃなくて、実行中
0049デフォルトの名無しさん2005/09/03(土) 13:59:18
どこでとまるかを
printf("ここまできてる1\n");
,,,
printf("ここまできてる2\n");
,,,
printf("ここまできてる3\n");

こんなんでみつけなよ

あなたの情報だけじゃ誰もどうしようもない。
他のコンパイラでは問題がなければあなたが使っているコンパイラのバグの可能性もある。
■ このスレッドは過去ログ倉庫に格納されています