タグ

ブックマーク / ymmt.hatenablog.com (2)

  • IPv6 は人類には早過ぎたんだ - 誰かの役に立てばいいブログ

    人類は大袈裟ですが、私には厳しかったという話。 IPv6 対応のプログラムとは? いたるところに書かれているので省略。以下の記事などを参考にどうぞ。 IPv6ソケットプログラミング Programming using C-API 手短にまとめると gethostbyname(3) ではなく getaddrinfo(3) を使って名前解決する accept(2) や getpeername(2) で返るアドレス情報は struct sockaddr_storage に格納する listen するソケットは AF_INET6 指定で作ると IPv4/v6 両対応になる シンプルですよね。ここまでは。 落とし穴1:リンクローカルアドレス IPv6 のアドレス体系は IPv4 とかなり異なります。最たるものがリンクローカルアドレスです。 リンクローカルアドレスはルーティングされないので、リンク(≒

    IPv6 は人類には早過ぎたんだ - 誰かの役に立てばいいブログ
  • アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ

    子供のころからできるだけ手抜きして成果を挙げることだけは長けている山です。 今回は、C/C++ で作ったプログラムが運用中にクラッシュするときのデバッグ方法のお話しです。 開発中のデバッグは gdb などでソース追いながらデバッグできますが、運用中ですと strip していたり最適化していたりしてデバッグが難しくなります。 そもそも、いきなりクラッシュすると情報が残らずに困ってしまいます。そんなときどうするか。 Step1. スタックトレースを出力する こんな関数を用意しましょう。Linux 以外の人はそれなりに実装してください。 #include <execinfo.h> #include <unistd.h> void dump_stack() { void* bt[100]; int n = backtrace(bt, 100); backtrace_symbols_fd(bt,

    アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ
  • 1