タグ

debugに関するsh19910711のブックマーク (141)

  • 『Effective Debugging』の査読を担当しました - 何かを書き留める何か

    一年越しの夢がかなう 2017年6月24日にオライリージャパンから『Effective Debugging』の邦訳が発売される。 www.oreilly.co.jp この度、邦訳の査読者として参加させていただいた。 オライリーの方から話があったのは2017年1月ごろ、査読を開始したのが3月中旬ごろである。 筆者のDiomidis Spinellisさんは『Code Reading』や『Code Quality』で有名なギリシャの計算機科学者である。 経歴を見る限り、GoogleのSREエンジニアとして1年間働くなど実務経験もあるすごい人である。 book.mynavi.jp book.mynavi.jp 私は原著を2016年6月頃に紀伊國屋経由で入手している。 明日届く洋書、1冊で薄いだからネコポス扱いで待たなくてよさそう(同人誌ではない)— Hayao(-ε-δ) (@Cardinal

    『Effective Debugging』の査読を担当しました - 何かを書き留める何か
    sh19910711
    sh19910711 2024/06/27
    "1章、2章でデバッグ戦略の全体像、心構えを説明 / 5章の「プログラミング技法」、「項目3:前条件と後条件が満たされていることを確認する」、そして「項目9:デバッグを成功させるために心の準備をする」" 2017
  • LLVM IRをデバッグする方法 - Qiita

    モチベーション llvmのフロントエンドを開発するとき,LLVM IRのアセンブラを直接デバッグ検証したいことがあると思います。 ネットに有用な情報がなかったので方法を探してみました。 他のフロントエンド開発者の方はどうしているのでしょうか・・・? 結論 debugifyという最適化パスを通せば,lldbでデバッグできる。 ふつうのソースのデバッグよりかなりめんどい。 詳細 debugifyパスによるデバッグ情報付きのLLVMの生成 debugifyはもともとデバッグ情報が他の最適化パスによって不整合にならないことを検証するためのものでありすべてのLLVM IRの命令,変数,関数にデバッグ情報を付加するパスである。 ここからは例として,以下のtest.cから生成したLLVM IRをベースに説明する。 /*[ test.c ]*/ int add(int x, int y); int mai

    LLVM IRをデバッグする方法 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "llvmのフロントエンドを開発するとき,LLVM IRのアセンブラを直接デバッグ検証したい / debugifyという最適化パスを通せば,lldbでデバッグできる / ふつうのソースのデバッグよりかなりめんどい" 2019
  • Action Mailer + letter_opener_web を使って開発環境のメール送信機能を実装する

    送信されたメールが、以下のようにブラウザで確認することができること そもそもなぜ letter_opener_web が必要なのか 実際にメールを送信するには外部のメールサーバーを(SMTPサーバー)が必要になります。 主に使用されるサービスとして以下が挙げられます。 Gmail SendGrid Amazon SES Mailgun ただ、開発している時にいちいちメールサーバーを立てて、メールが実際に送信されるかみたいなことをやるのは非常に面倒です。 そこで、letter_opener_web gem を使うことで、以下のことができるようになります。 メールの送信を実際に行ったように見せかける ブラウザ上で送信したメール内容を確認する letter_opener_web の導入 必要な gem のインストール Gemfile の development のグループに以下を追記して bun

    Action Mailer + letter_opener_web を使って開発環境のメール送信機能を実装する
    sh19910711
    sh19910711 2024/06/16
    "ActionMailer と、letter_opener_web gem を使って、開発環境でメール送信を確認 / letter_opener_web: メールの送信を実際に行ったように見せかけ + ブラウザ上で送信したメール内容を確認 + localhost:3000/letter_opener"
  • rails consoleのsandboxオプション、使ってる? - Qiita

    sandboxオプションの嬉しい点 sandboxオプションのメリットは、コンソール終了時に自動でデータベースへの変更をロールバックできる点です。 「手元で更新とか色々試したいけどデータベース変更したくないよ〜」という場合に便利。 そうでなくても誤って操作する可能性もあるので、とりあえずこのオプションで触っておけば ローカル環境のデータに影響が出ることはないので嬉しいですね。 使用方法 いつものコンソールを起動するコマンドに--sandboxでオプションをつけるだけ。

    rails consoleのsandboxオプション、使ってる? - Qiita
    sh19910711
    sh19910711 2024/06/16
    "コンソール終了時に自動でデータベースへの変更をロールバックできる / 誤って操作する可能性もあるので、とりあえずこのオプションで触っておけばローカル環境のデータに影響が出ることはないので嬉しい"
  • tidyverseの経過を出力してくれるtidylogをアレンジする - Qiita

    tidylogとは tidylogという面白便利ツールがあります。 tidyverseはとっても便利ですが、今どこが実行されているか知りたい、実際どんな流れでどんな処理が行われているか知りたい、という場合にそれを出力してくれるのがtidylogです。 library(tidylog) data <- mtcars %>% select(mpg, cyl, hp, am) %>% filter(mpg > 15) %>% mutate(mpg_round = round(mpg)) %>% group_by(cyl, mpg_round, am) %>% tally() %>% filter(n >= 1) library(tidyverse) の代わりに用いることで、select() でどの列を省いたかだとか、filter() で何行削ったかなどを教えてくれます。 tidylogの出力をア

    tidyverseの経過を出力してくれるtidylogをアレンジする - Qiita
    sh19910711
    sh19910711 2024/06/15
    "どんな流れでどんな処理が行われているか知りたい / tidylog: library(tidyverse) の代わりに用いることで、select() でどの列を省いたかだとか、filter() で何行削ったかなどを教えてくれます" 2023
  • バグを見つけ出すのに効果的な「説明メソッド」について

    元ネタはプログラミングに関するものだけど、 プログラミングに限らず広い範囲に使えるメソッド発見。 WEB+DB PRESS vol.38「プログラミングの光景」(高林 哲)の中で 「バグの原因を見つけ出すにはこんな方法があるよね」 というのがいくつか挙げられていた。 その中で「そうそう、そうなんですよね」と激しく思ったのがこれ。 身近な人に相談する(説明しているうちに自分で原因に気づく) ある。 言うことを聞かないプログラムについて人に状況を説明していて 「ここでね、ほらちゃんと中身を置換してるはずでしょ、 なのにね、なぜか表示してもね、置き換わってない・・・ のは、二次元配列になっちゃってるからですね。」 と一方的に解決してしまうことはよくある。 これは何もプログラミングに限ったことではないように思う。 パズルをやっているにせよ人生の方向性に悩んでいるにせよ 自分でいくら考えてもどうにも

    バグを見つけ出すのに効果的な「説明メソッド」について
    sh19910711
    sh19910711 2024/05/02
    "解決困難な問題に対処するための画期的な手法 / いくら考えてもどうにもならなかったのに人に現状を説明しているうちにいつの間にか解決していた、というのはよくある / WEB+DB PRESS vol.38「プログラミングの光景」" 2007
  • BigQuery & Crashlytics & Zapier - 毎日アプリのクラッシュ数をチャットに流れるようにする - Chatwork Creator's Note

    こんにちは、モバイルアプリケーション開発部のAndroidエンジニアのジェローム(@yujiro45)です。 最近寒いですね。寒くても、まだタンクトップを着ています〜 ChatworkのAdvent Calendar 2022の22日目の記事です。 どんなに気をつけていても、予期せずアプリがクラッシュしてしまうことはあるんじゃないですか? 発生したクラッシュが初の場合チャットへ通知したり、メールが送ったりすることがよくあると思いますが、クラッシュ数がどれくらいあるのかは、Firebase consoleでしか見れません。エンジニアでないと把握しづらいですね。この記事では毎日モバイルアプリのクラッシュ数をチャットに流れるようにする方法についてを記載したいと思います。 BigQueryとは Crashlyticsとは Zapierとは クラッシュ数をチャットに流れる方法 Crashlytics

    BigQuery & Crashlytics & Zapier - 毎日アプリのクラッシュ数をチャットに流れるようにする - Chatwork Creator's Note
    sh19910711
    sh19910711 2024/05/02
    "Crashlytics: クラッシュの検知とその原因の究明 + どのクラスの何行目で発生したかまで確認することができ原因の特定が行いやすい / Firebaseのコンソールを開いて、プロジェクト→プロジェクト設定→統合→BigQuery" 2022
  • 実践デバッグ技法 - 世界線航跡蔵

    オライリー・ジャパンから『 実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング 』を頂戴した。 概要 オライリーの『実践xxx』『Mastering xxx』 という技術xxxに少し慣れてきた人が更にステップアップするためのという印象がある。そして、体系的な理論というよりは現場の常識というものを扱っている。 『実践デバッグ技法』は前者の印象には反する。これは当にGDBの使い方と問題の切り分け方を手取り足取り教えてくれるで、まだデバッガが何なのかすら分かっていない人こそ読むべきだ。 一方で後者の印象には合致する。これこそが『 Debug Hacks -デバッグを極めるテクニック&ツール 』で著者のよしおかさんが訴えていた点でもあった。つまり、今までデバッグの技法というものは理論化されそれが普及しているとは言い難い。にもかかわらず、現場では常識である。初心者はどう

    実践デバッグ技法 - 世界線航跡蔵
    sh19910711
    sh19910711 2024/04/27
    "GDBの使い方と問題の切り分け方を手取り足取り教えてくれる本 / 『Debug Hacks』よりはもっと初心者向けで、ユーザーランドのプログラマ向けにデバッグのやり方を教えてくれる / トレーサーやメモリデバッガの話もある" 2009
  • Charles でネットワークデバッギング

    iOSDC Japan 2018 2018/09/01 13:30〜 Track C レギュラートーク(15分) Charles Proxy http://charlesproxy.com/ iOSアプリ内で不正なSSL証明書を検知する / SSL Pinning for iOS apps - Speaker Deck https://speakerdeck.com/kobakei/ssl-pinning-for-ios-apps

    Charles でネットワークデバッギング
    sh19910711
    sh19910711 2022/09/02
    2018 / "不具合の原因はたくさんある / ただしくデバッグできれば平和になる / Map Remote: 特定のHost, Path, Queryに対応するリクエストを別のHost, Path, Queryに転送 / Mirror: レスポンスをローカルに保存 + 半手動クローリングに便利"
  • Pythonスクリプトのメモリリークを探す - Qiita

    どんなプログラミング言語でもメモリリークの追跡は難しいものです。特に、他人の作ったライブラリでメモリリークがある場合、原因を切り分けるのは非常に面倒な仕事になります。 Pythonにはtracemallocという組み込みモジュールがあり、これがメモリリークの調査に便利だったのでまとめてみます。 メモリ消費量トップ10を出す tracemallocのマニュアルにも書いてあるのですが、下記のようにするとメモリ消費量のトップ10が出せます。 import tracemalloc tracemalloc.start() # ... メモリリークしてるっぽい処理 ... snapshot = tracemalloc.take_snapshot() top_stats = snapshot.statistics('lineno') print("[ Top 10 ]") for stat in top

    Pythonスクリプトのメモリリークを探す - Qiita
    sh19910711
    sh19910711 2022/08/27
    おお、便利そう / "Pythonにはtracemallocという組み込みモジュールがあり、これがメモリリークの調査に便利 / バックトレースつきで表示すると原因がわかりやすくなります / 特定の期間でのメモリ消費量の差分を表示"
  • printデバッグに絵文字を使うと捗る話 - Magnolia Tech

    雑にprintデバッグしたい時、👺を使うと、赤くて目立ちます あと、目線が有るんで、「あ、ここを見るのね」ってわかって便利です(なにが?)— magnoliak🍧 (@magnolia_k_) 2022年3月21日 というツイートをしたら意外と反応が多かったので、ブログのエントリとして残しておきます。 printデバッグの時は冒頭に内容を示す文字列を書いておくと思いますが、その時に冒頭に「👺」を差し込んでおくと赤くて目立つし、珍しく横を向いてる絵文字なので、「ここから先を見ろ」って分かりやすい。 あとまず普通出てこないので、検索し易い。 macOS だと「おに」の変換で出てくるのでタイプ数も少ないし。 ちなみに👺はUnicode上ではgoblinという名称だけど、Tenguじゃダメだったのかな… iOSの鬼の絵文字も👹ちょっとイメージ違うしなぁ https://t.co/BcX4

    printデバッグに絵文字を使うと捗る話 - Magnolia Tech
    sh19910711
    sh19910711 2022/07/15
    "冒頭に「👺」を差し込んでおくと赤くて目立つし、珍しく横を向いてる絵文字なので、「ここから先を見ろ」って分かりやすい / 普通出てこないので、検索し易い / 「おに」の変換で出てくるのでタイプ数も少ない"
  • 集計の際にデバッグ可能な情報を埋め込む: SQLを検証可能にする · Issue #15 · takegue/estante

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    集計の際にデバッグ可能な情報を埋め込む: SQLを検証可能にする · Issue #15 · takegue/estante
    sh19910711
    sh19910711 2022/06/21
    たしかに集計処理で落ちるメタデータが良い感じに追跡できると嬉しい場面は多そうな気がする / "集計クエリが負債化しやすいのは不可逆な操作で、なおかつデータソースというas-wasの状態を含むから"
  • printf()を書くかわりに.gdbinitを書く - iakioの日記

    わたしがprintf()デバッグをしない理由 2009-03-22 - 未来のいつか/hyoshiokの日記 というエントリを読んだ。 僕もわりと安易にprintf()してしまうのだけれど、以前は結構頑張ってgdbを使っていたのでちょっとそのころを思い出して書く。 printf()が便利なのは、それがコードとして残ることだ。IDEのデバッガだと同じ操作を何度もするのが面倒だったりするわけだけど。 でもgdbだと.gdbinitというファイルにgdbの操作を書いておくことができる。 例えばこんなしょーもないコードがあったとする(sum.c)。 int main() { int i, j; for (i = 1, j = 0; i <= 10; i++) { j += i; } return 0; } で、ここでjとiの内容を表示したいとする。printf()を入れたい気持を抑えてこんな.gd

    printf()を書くかわりに.gdbinitを書く - iakioの日記
    sh19910711
    sh19910711 2022/05/05
    2009 / "printf()が便利なのは、それがコードとして残ることだ / gdbだと.gdbinitというファイルにgdbの操作を書いておくことができる / 再コンパイルの手間が省ける"
  • Spark に break point を貼って Debug する方法 - Qiita

    はじめに Sparkを使っていて以下のような辛さがありました。 Hyper Parameter を少しずつ変えてチューニングしたいだけなのに、そこに至るデータ処理に時間がかかりすぎて何度もトライするのが辛い。 spark-shell でもまぁデバッグできなくは無いんだけど、デバッグしたい箇所に至るまでのステップをshellに打ち込むのが面倒。 あぁ Spark でも break point 貼れたらなぁ… この記事はそんな辛さを解消する記事です。 まとめ 簡単な話なので先にまとめると、 spark-submit 時に SPARK_SUBMIT_OPTS に jdwp の設定を入れて起動 Intellij の Remote Debugger 機能で break point を貼る と言うものです。 おことわり この記事は Intellij で Debug する方法を書いていますが、eclip

    Spark に break point を貼って Debug する方法 - Qiita
    sh19910711
    sh19910711 2022/01/29
    "spark-submit 時に SPARK_SUBMIT_OPTS に jdwp の設定を入れて起動 + Intellij の Remote Debugger 機能で break point を貼る"
  • Ruby 3.1 の debug.gem を自慢したい - クックパッド開発者ブログ

    技術部の笹田です。今日保育園に娘を送りにいったら、娘が先生に「サンタさんにプレゼントもらったよ! お母さんもプレゼントもらってたけどお父さんはもらってなかった!」と報告しており、私だけが悪い子と保育園に伝わってしまいました。 2021年は、笹田は Ruby 3.1 に導入された debug.gemruby/debug: Debugging functionality for Ruby)に結構長い時間をかけました(かけてしまいました)。だいたい半年で終わるだろうと思ってたんですが、終わらず。Ractor をもっとやる予定だったんだけどなぁ。ソフトウェア開発の見積もりは難しいですね。 記事では、debug.gem について、導入の背景、簡単な使い方、それからちょっと面白い機能までご紹介します。 youtu.be (稿では動画をいくつか載せていますが、動画作成時と記事執筆時が違うので、そ

    Ruby 3.1 の debug.gem を自慢したい - クックパッド開発者ブログ
    sh19910711
    sh19910711 2022/01/03
    便利そう。TruffleRubyみたいにDevToolsで動くっぽい / "Chrome ブラウザをデバッガフロントエンドとして利用することができます / レコード&リプレイデバッグ: コード実行を記録しておき、あとで再生することができます"
  • デバッガでRedisのコードを読んでみよう

    freee社内でgdbを使ってRedisのソースコードを読む勉強会をしたときの資料です。

    デバッガでRedisのコードを読んでみよう
    sh19910711
    sh19910711 2021/09/13
    "ソースコードリーディングで気をつけること: 何を読むかテーマを絞る + ドキュメントを先に読む + 動かして読んだほうがコードをつかみやすい"
  • strace の -k オプションでスタックトレースを出す - hibomaの日記

    strace で -k を指定すると システムコール呼び出しのスタックトレースを採取できるのを知った。v4.9 から使える experimental 扱いのオプション -k Print the execution stack trace of the traced processes after each system call (experimental). This option is available only if strace is built with libunwind. 以下のような出力を得られる $ strace -k ls execve("/usr/local/bin/ls", ["ls"], 0x7ffcf3bcdd58 /* 26 vars */) = 0 > /usr/lib64/libc-2.17.so(execve+0x7) [0xbf557] > /usr

    strace の -k オプションでスタックトレースを出す - hibomaの日記
    sh19910711
    sh19910711 2021/08/29
    "システムコールから逆引きで呼び出し元のシンボルとファイル名が一覧できるので、ただ単にソースコードリーディング用のツールとしても有用そう"
  • SparkアプリケーションのデバッグTIPS - Qiita

    Spark UIでスレッドダンプを見る どこかで詰まってる/デッドロックしているなどを調べたい場合、スレッドダンプを見るのが有効ですが、それだけならSpark UI上でできます。 EMR上でJMXリモートデバッグ ここではjvisualvmを使うことにします。 jvisualvmの準備 jvisualvmにプラグインを入れておくと捗ります。 Tools > Pluginsからプラグイン管理画面を開き、Threads Inspectorあたりは入れておくと便利です。 ステップを追加する 前提 アプリケーションはjarに固めてs3://path/to/app.jarに置いてあるとします command-runner.jarでspark-submitする方法でステップを実行します EMRクラスタのmasterおよび各ノードは、22番が空いてるものとします EMRにステップの追加 以下のようなコマ

    SparkアプリケーションのデバッグTIPS - Qiita
  • 並行処理で役立つデバッグ&分析手法|Goでの並行処理を徹底解剖!

    並行処理で役立つデバッグ&分析手法|Goでの並行処理を徹底解剖!
  • Chrome Devtoolのmonitorを使うと関数の呼び出しを観察できて便利 - ぱすたけ日記

    を読んで思い出したのでご紹介です。 元の記事と同様に以下の関数 sum について、 function sum(nums, acc = 0) { console.log({ nums, acc }); if (nums.length === 0) return 0; if (nums.length === 1) return nums[0]; return sum(nums.slice(1), acc + nums[0]); } この関数sumの引数 (nums と acc) の呼び出しごとの変化を見たい場合は、所謂プリントデバッグや debugger を使うのは一般的なテクニックとしてよく知られていますが、このような関数呼び出し時の引数を知りたい場合はmonitor(function)という関数を使うことで同様の効果を得ることが出来ます。 この場合は monitor(sum)とした後に、関

    Chrome Devtoolのmonitorを使うと関数の呼び出しを観察できて便利 - ぱすたけ日記