タグ

gdbに関するy_uukiのブックマーク (9)

  • MySQL-5.6のMRRにデッドロック回避の夢を見る - ichirin2501's diary

    この記事は、はてなエンジニアアドベントカレンダー2016の7日目の記事です。 昨日は id:haya14busa さんのSum/Union/Variant Type in Go and Static Check Tool of switch-case handlingでした。 こんにちは、ドラゴンボールのヤムチャ状態になってるichirin2501です。 技術ネタとして何を書こうかと考えたのですが、 またMySQLでロックの話をする運びとなってしまいました。 技術ネタついでに今年最後の記事になると思われるので、 この1年のアウトプットを振り返ってみますと、 はてな・ペパポ技術大会 〜インフラ技術基盤〜 計算量と僕とWeb開発 / computational complexity and I and Web // Speaker Deck Haten Engineering Seminar

    MySQL-5.6のMRRにデッドロック回避の夢を見る - ichirin2501's diary
    y_uuki
    y_uuki 2016/12/07
    MySQLのコードをgdbで解析してるあたりが見どころです
  • Perlプログラマのためのgdb入門(at Shibuya.pm #9 LT) - とあるはてな社員の日記

    先日のShibuya.pm #9のLightening Talkで「gdbでXS on mod_perlをデバッグ」という話をしてきました。XSを使い出すと、従来のPerl的デバッグだけでは不十分なのでgdbをうまく使って、効率的にデバッグしましょう、という話です。実は、はてな社内では1年近く前に勉強で話したネタだったのですが、ようやく公開することができました。 Shibuya.pmでは5分という枠があったのでショートver.でしたが、ここでは制限はないので、来のロングバージョンの資料をアップします。ちょっと公開できない情報が混っていたので、xxxで隠していますが、ご了承ください。 ちなみに、Rubyとかでも似た感じでデバッグできると思うので、そちらの人も参考にしてください。長いよ!という人は、最後の「これは設定しておけ的gdb初期化マクロ」だけでもどうぞ。かなり便利です。 (資料公開が

    Perlプログラマのためのgdb入門(at Shibuya.pm #9 LT) - とあるはてな社員の日記
  • コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ

    不慣れな環境を不意にいじった時にあるあるネタ。 とりあえずー とか言って勢いで書いたsetupスクリプトを実行してみたら意外と時間かかって、 ちょっと目を離した隙にsshの接続が切れちゃいました! 。。。ありますよね。ほんとよくありますよね。 そうなる予感はあったんだ なんて後の祭りです。ふとした油断から、screenもnohupすらも使わずにやってしまって、こんなことに。 shellがHUPしなかったからプロセスは生きてるものの、ログが見れないから進行状況がわからない。 うまく行ってるのかどうかモヤモヤした気持ちのまま、プロセスが終わるのをじっと待つ。。。 まぁ実に切ないです。 こんな時、いつも思うこと。 このプロセスの出力、もっかいstdoutに繋げられたらいいのに。。。 はい。というわけでつなげましょう。 長い前座ですみません。 切り離したプロセスを用意 #!/bin/bash wh

    コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ
  • 既存プロセスの標準出力と標準エラーを奪う - Qiita

    #!/bin/bash # 既存プロセスの標準出力と標準エラーを奪う http://bit.ly/1neWKth # ターゲットのPID pid=$1 [[ -d /proc/$1/fd ]] || exit 1 # 出力先はttyやファイルを指定 out="$2" # 出力先の指定がない場合は現在のttyを出力先にする if [[ -z $out ]]; then # プロセスに紐付いたttyを取得する http://bit.ly/1eDpRpu function search_tty() { local pid=${1:-$$} tty="" while [[ 1 -lt $pid ]]; do [[ -d /proc/$pid/fd ]] || break tty=$(readlink /proc/$pid/fd/1 2>/dev/null | awk '{print $1}') [

    既存プロセスの標準出力と標準エラーを奪う - Qiita
  • SIGNALを考慮してないTheSchwartz Job workerをなるべく安全に停止する - 酒日記 はてな支店

    TheSchwartz の worker はシグナルに対してデフォルトでは何もしないので、再起動させようと SIGHUP を送信したりすると job 処理の途中で割り込まれて死ぬ可能性があります。 自前でトラップして安全に再起動する方法は過去に TheSchwartz の worker を安全に停止する で書きました。3年前の記事ですが。 今回は、シグナルへの対処がなされていない古いスクリプトを修正したものの、既に動いている worker を安全に止めないと入れ替えられないのでどうするか、というお話。 安全な停止法を twitter で緩募したところ、以下のようなアドバイスを頂きました。しかし別の queue DB 使うのは確実そうだけどちょっと面倒ですよね…… 緩募: signal trapしてないTheSchwartzのjob workerを安全に止める方法 2011-04-25 11

  • gdbでのマルチスレッド処理のデバッグや制御について - 千里霧中

    マルチスレッド処理のデバッグや解析において、gdbで各スレッドの実行・停止を制御する操作についてメモ。 なお今回は解説で以下のサンプルコードを使用する。ここでは3つのスレッドがそれぞれ「m_count 」「t1_count 」「t2_count 」の3つの変数をインクリメントしている。 //main.c #include <stdio.h> #include <unistd.h> #include <pthread.h> static unsigned int m_count = 0, t1_count = 0, t2_count = 0; void *thread1(void *args) { while (1) { t1_count++; } return NULL; } void *thread2(void *args) { while (1) { t2_count++; } ret

    gdbでのマルチスレッド処理のデバッグや制御について - 千里霧中
  • GDBの便利技: (gdb)> でコードビューアを立ち上げて快適デバッグ - 佐野デジタル研究所

    はじめに はてなダイアリーのスーパーpre記法(ブログ文にソースコード等を貼り付けるための記法)で始まるテキストがクリップボードに入った状態で、間違って、gdbのシェルに貼り付けてしまった。そしたら、見たことの無い画面が出現。これは便利すぎる。 Linuxカーネルのコードを読むのに欠かせない技になりつつあるので、メモとして残しておこう。 使い方 めちゃくちゃ簡単。「>」を入力するだけ。 (gdb) >バックトレースが取れる状態で、フレームを選択して、「>」を入力すると、そのフレーム周辺のコードを見るためのビューアーがgdb内に立ち上がる。ビューアを良く見ると、左上に、閲覧中のファイルのパス、左端に行番号が表示されている。 ↑↓キーでコードを移動できる。ちょっと前後のコードも確認したい時に重宝する。(gdb)のコマンド履歴を遡りたい場合はCtrl+P。その逆は、Ctrl+N。Emacsと同

    GDBの便利技: (gdb)> でコードビューアを立ち上げて快適デバッグ - 佐野デジタル研究所
    y_uuki
    y_uuki 2012/12/30
  • Macでgdbにプロセスの制御権を与える - handlename's blog

    前回の記事で出ていたエラーメッセージについて、解決したので。 darwinでgdbを使って デバッグする = プロセスを制御する ためには権限が必要なんだそうです。 Building GDB for Darwin - GDB Wiki なので、gdbを実行するときに $ sudo gdb hogehogeとすればデバッグはできるのですが、わざわざ管理者権限でデバッグするのは嫌><!ということで、証明書をつくってプロセスの制御を許可する、というのがスマートな方法らしいです(ということがまんま上記のページに書いてあります:p) せっかくなので証明書のつくりかたと登録の方法をSS入りで。 証明書の作成 キーチェーンアクセスでつくります。 キーチェーンを起動して、 キーチェーンアクセス > 証明書アシスタント > 証明書を作成...を選択。 名前: gdb-cert (わかればなんでもいい) 固有

    Macでgdbにプロセスの制御権を与える - handlename's blog
    y_uuki
    y_uuki 2012/05/25
  • vim使い向けのGDBフロントエンド、CGDBが便利という話 - id:anatooのブログ

    最近PHPの中身を探ることが多くなってきました。以前PHPカンファレンス2011で話した「PHPをハックしてオレオレ文法を追加する」のなかでは、PHPの内部の動きを知るにはソースコードリーティングだけだと実際にどんな動きをしているのかわかりづらいので、そういう時はGDB使ってやるといいよ、というふうなことを言いました。とかいいつつ、実際にはGDBを直接使ってはいません。操作がプリミティブ過ぎて使いづらいからです。代わりに、GDBフロントエンドの一つであるCGDBというソフトウェアを利用しています。 この記事ではこのCGDBの概要について簡単に説明します。 CGDBの何が便利なのか GDBフロントエンドには、DDD、Insightなどがあります。また、純粋なGDBフロントエンドの他にも、Eclipse CDT、XcodeなどGDBフロントエンドとしての機能を有しているIDEなどがあります。こ

    vim使い向けのGDBフロントエンド、CGDBが便利という話 - id:anatooのブログ
    y_uuki
    y_uuki 2012/03/06
  • 1