タグ

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

  • バグを見つけ出すのに効果的な「説明メソッド」について

    元ネタはプログラミングに関するものだけど、 プログラミングに限らず広い範囲に使えるメソッド発見。 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を使うと関数の呼び出しを観察できて便利 - ぱすたけ日記
  • PostgreSQL ソースコードの読み方

    vi + ctags, gdb, strace [ 2 ] Copyright(C)2003 NTT DATA Corporation Copyright(C)2003 NTT DATA Intellilink � vi + ctags ¡ ¡ ¡ vi ¡ vi ¡ grep � gdb ¡ gdb ¡ gdb ( ) ¡ gdb ( ) ¡ gdbstrace ¡ strace ¡ strace ( ) [ 3 ] Copyright(C)2003 NTT DATA Corporation Copyright(C)2003 NTT DATA Intellilink � � ¡ ¡ DB ¡ postmaster [ 4 ] Copyright(C)2003 NTT DATA Corporation Copyright(C)2003 NTT DATA Intellilink � c

    sh19910711
    sh19910711 2021/02/28
    "PostgreSQL ソースコードの読み方 / JPUB しくみ分科会 勉強会"
  • インタプリタ開発者によるRubyの挙動解析への道 - クックパッド開発者ブログ

    Ruby インタプリタを開発している笹田です。今年のクリスマスにリリース予定の Ruby 2.6、楽しみですね(無事、出るといいな)。 この記事では、私がRubyの挙動を調べるために頑張った記録を書いておきます。 基的に、単純作業の積み重ねなので、難しい内容はありません。お気楽にお読みいただければ幸いです。 大雑把にまとめると、こんな内容が書いてあります。 デバッグカウンタの導入によるRubyの詳細な挙動調査の紹介 (私には)簡単な話で、Rubyをいろいろいじって、Rubyの細かい挙動、しかもほとんどの人が気にしない挙動を調べられるようにした話です。 多くの人が興味ないだろう、Rubyに仕込まれている統計情報をとる仕組みを紹介します。 クックパッドアプリを手元で調査できるようにした話 (私には)難しい話で、Ruby 開発版で弊社アプリを手元で動かすために四苦八苦した記録です。 Ruby

    インタプリタ開発者によるRubyの挙動解析への道 - クックパッド開発者ブログ
    sh19910711
    sh19910711 2020/11/02
    "なぜプロファイルカウンタではなく、デバッグカウンタという名前にしているかというと、プロファイルカウンタにしておくと、通常のプロダクション環境でも値が取りたい、などと言われそうだから"
  • pudbで機械学習開発を加速させる - The jonki

    皆さん,python機械学習のコードを書くときに,どのような環境で実装してますか?私は師匠もおらず,自分なりにいろいろ試していたところpudbに落ち着きました.pudbはデバッガーでpdbUIが付いたようなものになります.pdbC++でいうgdbみたいなもんですが,まぁガッツリ使うのは辛いです.pudbは下記の画像のようにターミナル上でグラフィカルにデバッグをできます. pudbを使うとどのようなことができるのか,この記事ではgifアニメーションをもとに紹介します. なぜpudbが便利か,AtomやVS Codeは使わないの? 動作例の説明の前に,簡単にpudbに落ち着いた理由を説明しておきます. 私の環境だと,GPUが載ったマシンが手元になく(AWS,大学,会社),リモート(SSH経由)で開発する必要がありました.マシンが物理的に近くにあるときは,そのマシン上でVS Codeを動か

    pudbで機械学習開発を加速させる - The jonki
    sh19910711
    sh19910711 2020/10/25
    "pudbはデバッガーでpdbにUIが付いたようなものになります.pdbはC++でいうgdbみたいなもんですが,まぁガッツリ使うのは辛いです.pudbは下記の画像のようにターミナル上でグラフィカルにデバッグをできます"
  • https://www.jasst.jp/symposium/jasst18tokyo/pdf/D4.pdf

    sh19910711
    sh19910711 2020/08/29
    "「龍が如く」を面白くするための高速デバッグログ分析と自動化(JaSST’18 Tokyo) / ゲーム開発におけるQAエンジニアとは楽しい開発環境を作ってゲーム開発を楽しくする仕事"
  • 2020年7月、Ruby 2.7 を gdb で追う時のメモ - ローファイ日記

    だいたい下記の記事と同じなんだけれど、少しでも新しい何かがあれば。2020年現在、Ruby 2.7.1 を対象に。 techlife.cookpad.com デバッグしやすい Ruby をインストールする rbenvで入れ直す場合 RUBY_CONFIGURE_OPTS で最適化を切るオプションを渡す 国分さんの記事の通り -g などは渡す必要がないそう、デフォルトが -ggdb3 なのでそれでOK -k でソースコードを残す が留意点。こういう感じで。 $ RUBY_CONFIGURE_OPTS='optflags=-O0' rbenv install 2.7.1 -k 関数を探す ソースコードを頑張って追いかける。あるいはとりあえずそれらしいものを readelf -s などで探しても良いかと思う。 $ readelf -s /home/vagrant/.rbenv/versions/

    2020年7月、Ruby 2.7 を gdb で追う時のメモ - ローファイ日記