メモの日々


2009年09月04日(金) [長年日記]

  • 夏休みはもうとった。
  • 少し前に衆議院議員選挙があり、民主党が圧勝した。今の総理大臣はまだ麻生さん。

[c++][dev] C++の例外発生時のバックトレースを得る

にgdbを使ってC++の例外発生時にバックとレースを得る例が書かれていて、わりとお手軽で便利だったので自分でもメモ。内容は上のものと同じです。

サンプルプロラム

#include <iostream>
#include <stdexcept>

void throw_e() {
    throw std::runtime_error("oreore");
}

int main() {
    try {
        throw_e();
    } catch (std::runtime_error& e) {
        std::cout << "exception: " << e.what() << std::endl;
    }
}

これを次のようにデバッグ情報付きでコンパイルする。

$ g++ -g -Wall exception.cpp

実行すると次のようになる。

$ ./a.out
exception: oreore

gdbを使ってバックトレースを得る

$ gdb a.out
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...

(gdb) break main
Breakpoint 1 at 0x8048c1c: file exception.cpp, line 10.

(gdb) run
Starting program: /home/kenichi/work/cxx/a.out

Breakpoint 1, main () at exception.cpp:10
10              throw_e();

(gdb) catch throw
Catchpoint 2 (throw)

(gdb) c
Continuing.

Catchpoint 2 (exception thrown)
0xb7f888e5 in __cxa_throw () from /usr/lib/libstdc++.so.6

(gdb) bt
#0  0xb7f888e5 in __cxa_throw () from /usr/lib/libstdc++.so.6
#1  0x08048bd0 in throw_e () at exception.cpp:5
#2  0x08048c21 in main () at exception.cpp:10

おお、得られた。

  • catch throw」で例外のthrowに対しブレイクポイントを設定できる。
  • ただし、catch throwはプログラム開始後でないとエラーになってしまうようなので、先にmainにブレイクポイントを設定してプログラムを開始し、止まった後でcatch throwを実行している。

2009年09月08日(火) [長年日記]

[life] コンタクトレンズを紛失した

コンタクトを装着しようとしたらケースに片方のレンズがセットされていないことに気づいた。ケースから出すときに飛ばしちゃったのかと思って周りを探したけれど見つからない。無い。

昨日外して仕舞うときに無くしちゃったのかも。もう何年も使ったものなので諦めはつく。でもコンタクトがないと不便だし、新調するの面倒だなあ。

[life] コンタクトレンズあった

家に帰ってコンタクトのケースをもう一度調べたら、片側に2枚のレンズが重なって入っていることに気づいた。

昼間もそれを疑って調べはしたのだけれど、そんなことありえないと思ってきちんと調べられていなかったみたい。2枚のレンズがぴったりとくっついていたのだ。

仕舞うときに間違えたんだろうなあ。もっと集中して生活しないといかん。

レンズに傷がついていないか心配だけれど、明日試してみる。


2009年09月10日(木) [長年日記]

  • コンタクトレンズは使えている。よかった。
  • HudsonのWikiサイトを見たいにのダウンしている。「Perhaps somebody tripped over the cable...」とつぶやかれている。
  • dev.java.net とか、Sunが関連するサイトは重い&しばしばダウンするという印象がある。

2009年09月11日(金) [長年日記]

  • HudsonのWikiは復旧している。でも重い。
  • OpenOffice.orgの最新版をダウンロードしたのだけれど、サイトが重くてやたら時間がかかった。

新聞メモ

9月11日の東京新聞より。

耳に虫、掃除機で吸い込んだら不調に

読者からの相談に医師が答える「紙上診察室」。今回の回答者は東京厚生年金病院耳鼻咽喉科部長の石井正則さん。

耳に虫が入ったときに掃除機で吸い出すのは「絶対にしてはいけない方法」だそう。ではどうするのがいいのかというと、

一般的に、虫は光に向かって飛ぶ習性があります。小さい虫なら、懐中電灯を耳に当てたり、蛍光灯や明るい所に耳を向けると、外に出てきます。

ベビーオイルかオリーブオイルを耳にあふれるくらい注ぐ方法があります。虫を窒息させるためです。死んだ虫を取り除く場合、耳鼻咽喉科を受診し、入れたオイルも一緒に取り除いてもらう必要があります。

とのこと。

なんでオリーブオイルなのかなあ。水じゃだめなのだろうか。

企業に「CO2削減証書」

港区が、

国産の木材を用いて区内にビルを建設した開発業者に、CO2の排出削減、吸収拡大をしたとの証書(クレジット)を発行する認証制度をつくり、来秋からの運用を目指す。

とのこと。必要なのか、こんな制度。もっと他にやるべきことがあるだろうに。

国産材を使えば、木材を燃やさない分CO2を削減できるうえ、間伐など森林の整備が進み、森のCO2吸収率が高まる。

とあるが、「国産材を使えば、木材を燃やさない分CO2を削減できる」って意味が分からない。国産かどうかは無関係だよなあ。

認証して/されて何が嬉しいのか分からないのだけれど、

環境省やほかの自治体がCO2削減プロジェクトについてクレジットを発行する同種制度では、

とあるので、認証したい人たちはたくさんいるようだ。

広がる偽装請負

毎日色々な人が書く「本音のコラム」コーナー。今日は派遣ユニオン書記長の関根秀一郎さん。この人のコラムはいつも「派遣はダメ、雇用せよ、規制強化せよ」という同じ内容で全く同意できないのだけれど、わりと読みやすくて毎回読んでる。

今回は、厚労省が出している「「労働者派遣事業と請負により行われる事業との区分に関する基準」に関する質疑応答集」(厚労省のサイトにある。PDF版しかなく不便。)が偽装請負を容認していてけしからん、という話。こういう人たちの圧力によって請負契約を結びにくくする変なルールができると困るんだよなあ。


2009年09月23日(水) [長年日記]

  • 北川景子は鈴木亜美に似ている。笑った顔が似ているのかな。
  • 連休おしまい。やったのは、郵便局へ書留を受け取りに行ったこと、粗大ゴミ収集を申し込んだこと、Yahooポイントを使ったこと。
  • 粗大ゴミの申し込みはウェブからできた。便利。コンビニでゴミ券を購入する必要がある。これは面倒。捨てるのはコタツ。
  • Yahooポイントは今月末が有効期限なので使った。買いたいものが無くて困っていたのだけど、本を買うことを思いつきRuby逆引きハンドブックを注文した。セブンアンドワイで注文したのでセブンイレブンで代金引換ができる。クレジットカード番号が不要で送料もかからないのでありがたい。
  • あっ、Amazonプラグインがエラーになるぞ。

やること

  • 粗大ゴミ券を買う
  • 本を受け取る
  • tDiaryバージョンアップ
  • ブックオフ
  • エプソンのポイント

2009年09月30日(水) [長年日記]

  • 「Ruby逆引きハンドブック」をセブンイレブンで受け取って少しだけ読んだけど、説明の文章が分かりにくくて少なくともRuby初心者にはお勧めできない感じ。Ruby 1.9に対応しているのはありがたい。

[howto][soft] Firefox 3.5 で「他のタブをすべて閉じる」を非表示にする

Firefoxでタブバーのコンテキストメニューにある「他のタブをすべて閉じる」を誤って選択してしまい、たくさん開いていたタブが全滅してしまった。「閉じたタブを元に戻す」メニューで10個だけは復活できたけど、それ以外を復活させる方法は分からなかった。

こんな怖ろしい「他のタブをすべて閉じる」というメニューは無効にしようと about:config 画面を開いてみたが、それらしい設定項目は見つけられなかった。

検索すると、chromeフォルダ内に userChrome.css ファイルを用意しそこで設定を行えばメニューを非表示に出来そうだったのでやってみた。userChrome.cssに次のように書くと件のメニューは消えた。

menuitem[label="他のタブをすべて閉じる"] {
    display: none !important;
}

強引な消し方だなあ。

なお、Windows XPだとchromeフォルダはユーザフォルダ内の「Application Data」フォルダ配下にある。「Local Settings」フォルダ配下にもMozillaのフォルダがあって、最初はそちらを見ていてchromeフォルダを見つけられずに困ったのでメモしておく。

やること

  • 粗大ゴミ券を買う
  • 本を受け取る
  • tDiaryバージョンアップ
  • ブックオフ
  • エプソンのポイント