[過去ログ] qmailいろいろ(8) (945レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1: 2006/11/12(日)19:07 AAS
qmailの設定、インストール、関連ソフトウェアなど、
いろいろ情報交換しましょう!

前スレ qmailいろいろ(7)
2chスレ:unix

関連スレ、関連サイトは >>2-10 あたり。
926
(2): 02/08(木)16:39 AAS
>>924
qmailレベルのソフトウェアならソースを読んで理解したら
RFC822を理解しましたと言っても良い

間違ってることもあるかもしれないが
多分いずれの場合も起きる誤読の方が多いだろう

相補的に同時に読んでも良い
927: 924 02/09(金)20:04 AAS
>>925
>>926
レスありがとうございました。
コードリーディングって、qmailのソースだけを読めばいいのかと
もやもやしてました。
まだ読み始めたばかりなのですが、レスのおかげで
迷いがなくなりました

今はqmail-start.cのexecvp()で置き換わる
qmail-send.cの長さにビビっています。
コメントに、このファイルは長すぎると書かれていて
省4
928: 02/10(土)01:50 AAS
djbのコードはちょっとクセがあるけど読む価値はあると思う

セキュリティに関するいくつかの考察 - qmail 1.0 から十年
https://www.unixuser.org/~euske/doc/cr.yp.to/qmailsec-ja.html
929: 02/11(日)19:17 AAS
qmail-start.cでqmail-lspawnをexecするので
qmail-lspawn.cを読めばいいんだと勝手に思い違いをしていた
main()が見当たらない。

qmail-lspawnという実行ファイルを作る事に気付いて
Makefileをみてみた。
qmail-lspawnがspawn.oに依存していることが確認でき
spawn.oを作るspawn.cにmain()があると確認できた。

教訓:Makefileも検索してチェックする必要があると学習した
930
(1): 02/16(金)18:43 AAS
qmail内のグローバル変数のprintデバッグしたいのです

ソース内にprintfを書き込んで、標準出力
もしくはlogを書き出すようにソースを変更してから
再コンパイルして、動かすしかないのでしょうか

大昔の実機にlinuxをインストール、
qmailのソースを展開して
make setup checkまで準備し、作業を止めています。

もしもっといい方法があれば
アドバイスお願いします
931
(1): 02/16(金)21:35 AAS
>>930
gdbでpid指定してattach

主な使い方
https://rat.cis.k.hosei.ac.jp/article/devel/debugongccgdb1.html
932: 02/18(日)06:58 AAS
おはようございます

931さんに指摘してもらって、ps ax | grep qmailで
601 ? S 0:00 qmail-lspawn ./Mailboxと表示されたので
#gdb qmail-lspawnで起動し
(gdb)attach 601で
プロセスidを指定して、attachできました。

Reading symbols from /lib/libc.so.6...done.
Reading symbols from /lib/ld-linux.so.2...done.
0x400c717e in __select () from /lib/libc.so.6
上記のように表示されました。
省9
933: 02/18(日)23:08 AAS
-g -O0でコンパイルしたのか?
>>931のページをよく読め
934
(1): 02/20(火)08:55 AAS
おはようございます。
933さんにしてきしてもらった、
-g -O0を指定してコンパイルはしてませんでした

conf-ccファイルで、1行目を
cc -g -O0
と修正し、コンパイルしました

コンパイルはエラーなくできました
しかし、gdbでbreak mainとしても
main関数は定義されてないとメッセージが返ってきます

まいりました。
935: 02/20(火)09:23 AAS
>>934
ちゃんとnot strippedになってる?

/tmp:$ cat hello.c
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
/tmp:$ gcc -g -O0 hello.c -o hello
/tmp:$ file hello
省19
936: 02/20(火)12:46 AAS
935さん。朝の忙しい時にレスありがとうございました
helloワールドで同じようにやってみました

$ gcc -g -O0 -o hello hello.c
$ file hello
hello: ELF 32-bit LSB executable, Intel 80386, version 1,
dynamically linked (uses shared libs), not stripped
$ gdb hello
GNU gdb 19991004
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License,
省18
937: 02/20(火)15:29 AAS
qmailを展開したディレクトリで
conf-ccを編集
cc -g -O0
と修正後、make setup checkしてコンパイルできました

/var/qmail/binに移動後
# gdb ./qmail-lspawn
GNU gdb 19991004
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
省16
938
(1): 02/21(水)08:05 AAS
おはようございます。出来上がる実行ファイルがnot strippedになる場合とstrippedになる場合の
コンパイラのスイッチの違いがあるのでしょうか-gをつけても、つけなくてもnot strippedになります
$ cat samp.c
#include <stdio.h>
void subfunc();
int main() {
subfunc();
return 1;
}
$ cat sub.c
省21
939
(1): 02/21(水)16:44 AAS
>>938
./loadの中の-sが原因
--strip-allの意味

objdump -ft ファイル名
940: 02/21(水)19:51 AAS
>>939 さん
ありがとうございました。
conf-ldを
gcc -g -O0
と修正し、make setup checkを実行後
動作確認しました。

objdump -ft ファイル名
を書いてくれた意図は
宿題としてすこし考えさせてください
941
(1): 02/21(水)20:00 AAS
もう1つ聞きたいことがあります

今回ここで質問させていただき、
not stripped / strippedの事とか
サイズを減少させるための--strip-allの事とか
僕は初めて知りました

935さんや939さんは
どうやって学習されたのでしょうか?
学校の先生や先輩から手取り足取り教えてもらえるのでしょうか?

僕の場合は、書籍による独学がメインで
今回の事柄について書かれている本はありませんでした
省1
942: 02/22(木)07:15 AAS
>>941
gccのドキュメントを読む
manpageよりtexInfo
少し古ければ日本語版もあるだろう
本家のよく書かれたドキュメント読むのが結局は近道

特にqmailみたいなANSI Cの基本ライブラリに対する明確な批評があるようなソースを読む場合は
Cやgccを深く知ることがqmailやdjbの哲学を知ることに繋がる
この道はRustにも繋がった道だし

「読んで」ためになるドキュメントと
必要な時に参照するだけしか価値のないドキュメントの見分けはすぐにつくようになる
省6
943: 02/22(木)07:18 AAS
>>926
>(qmailの方が)間違ってることもあるかもしれないが

と簡単に書いたが
見つけたら賞金がもらえるのだ!
944: 03/27(水)19:36 AAS
反発狙いだから
945: 03/27(水)20:35 AAS
こどおじなんてどこから感染しないと思うんだけど、月額6000円に値上げするわ。
決算は黒髪にしたの?
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.946s*