Never explain another bugAuto-captures all the info engineers need to debug, including:
Never explain another bugAuto-captures all the info engineers need to debug, including:
この記事は Rust Advent Calendar 2023 シリーズ2 の1日目の記事である。 Rustは良くも悪くもシステムプログラミング言語なので、何も工夫しなければデバッグの体験がC言語と同じレベルになってしまう。例えば「rust lldb」でググると上位に Debugging Rust programs with LLDB is a nightmare というスレッドが出てきてしまう。 使うべきツールを知っていれば幾分かマシな体験にできる。Rustコンパイラはデバッガとして LLDB, GDB, WinDbg/CDB をサポート していて、僕はWinDbGは10年くらい触ってないので、この記事ではLLDBとGDBについて書く。 LLDB Apple SiliconのMacだとGDBが使えないので、必然的にLLDBを使うことになる。 CodeLLDB GDBと同じく、LLDBにも
はじめに こんにちは、kenです。 GWに「暇だな~~、こんな日はVS Codeの公式ドキュメントを読むか!w」と思って何気なく読んでたらデバッグに関して知らない機能がいくつかあったので、今回はそれをご紹介したいと思います。 おそらく今から紹介する機能はあまり知られてないと思います。もし全部知ってたらVS Code完全理解者なので誇ってください。(!?) 以下に記載する内容はVS Codeの公式ドキュメントのDebuggingという章を参考にしています。 注意 デバッグで使える便利な機能 ログポイント機能 行を指定しログポイントを追加すると、その行を訪れたタイミングでログを出力できます。 もちろんログ内には{式}という書式を使えば式も含めることもできます。 既存のコードに修正を加えることなく、ログを出力できるのは嬉しいですね!! これで 「プリントデバッグしたprint行を消し忘れてPRあ
2022-08-23にKubernetesのv1.25がリリースされました。 Kubernetes公式ブログ - Kubernetes v1.25: Combiner PSP(Pod Security Policy)の削除等、多くの変更がありますが、Ephemeral ContainersがBetaからStableバージョンとなりました。 この機能はkubectl debugコマンド[1]で使用できますが、あまり使ったことがなく、これを機に改めて使い方を調べてみましたのでご紹介します。 一般的にKubernetes上で動作するPodのコンテナをデバッグするにはkubectl execを使うことが多いかと思います。 しかし、昨今はセキュリティリスク低減や軽量化による起動速度向上の目的で、Distrolessイメージを使うことが多くなってきています[2]。 この欠点はデバッグが難しいことです。
この記事の狙い この記事は、端的に言えば この図が言わんとしていることを理解できるようになるための解説を目指しています。 昨今のプログラミング環境において、メモリの管理方法やその実態は、詳細を知らずとも目的を達成できるようになっています。といっても、実際にはメモリは無尽蔵に使えません。制約が厳しい環境下で動かさねばならないプログラムもありますし、多少潤沢に使える環境であっても、無駄に浪費するよりは、必要最低限のメモリで効率よく動作するプログラムの方が、多くの場面においては良いプログラムと言えるでしょう。 メモリのことなど知らなくてもプログラムを書けるのは一つの理想ではありますが、現実的にはその裏に隠されている(抽象化されている)仕組みを知っておいたほうが有利です。また、昨今のレトロゲームにおけるタイムアタックで駆使されるメモリ書き換えのテクニックなども、何故そういったことが可能なのかを知る
長い間 Chrome の DevTools を使ってきて、便利だなと思った機能をまとめてみました。 様々な機能があり、これを覚えておくと開発時に役に立つかもしれないので、ぜひ使ってみてください。 この記事は Corome DevTools 公式 を参考にしています。 日本語化 英語が苦手な方は日本語化しましょう。 手順 DevTools を開いたら、歯車マークをクリック Language で日本語を選択 [Reload DevTools] をクリックして DevTools のリロードをする 要素の状態を強制 指定の要素を :hover や :focus などの状態に強制的にすることができます。 そうすることで指定状態時のスタイルを確認することができます。 手順 要素タブをクリックする 状態を変更したい要素を選択する 今回は Google の検索フォームを選択 [:hov] をクリックする
東京五輪に関係するファイルを装った以下のファイル名を持つマルウェアが2021年07月20日(火) 15時頃、VirusTotalにアップロードされたことを確認しました。 【至急】東京オリンピック開催に伴うサイバー攻撃等発生に関する被害報告について.exe 早速ですが、本記事では該当検体の解析結果を共有します。 該当のファイルはVirusTotalにフランスからアップロードされており、ジェネリック検出が多いもののすでに複数のアンチウイルス製品によって検知されていることを確認しています。 図1 VirusTotalにアップロードされた不審なファイル 上記のファイルのプロパティには以下の通り何も情報が付与されていません。 図2 プロパティ情報 該当ファイルはアイコンを見る限りPDFのように見えますが、アイコン偽装されており、フォルダの詳細表示で見た場合は以下のように拡張子がEXEであることがわか
Also see: How to use HTTPS for local development. In this post, statements about localhost are valid for 127.0.0.1 and [::1] as well, since they both describe the local computer address, also called "loopback address". Also, to keep things simple, the port number isn't specified. So when you see http://localhost, read it as http://localhost:{PORT} or http://127.0.0.1:{PORT}. Summary When developin
ブログ読者のみなさん、はじめまして。 株式会社セガのベテランプログラマー阿部です。 このエントリーではデバッグ手法のあれこれについての体験談と、デバッグをテーマに一昨年に実施されたプログラマー向け新人研修の概要をお伝えしたいと思います。 EXE ファイルのデバッグ イーサネット絡みのデバッグ 周辺機器絡みのデバッグ デバッグスキルブートキャンプ 黒子に徹する、裏方系エンジニア EXE ファイルのデバッグ 同僚が作った EXE ファイルが手元にあり、あなたはこれを Windows で起動しようとしています。 起動してみたところ何も反応がなく、しかもそれは想定外のことでした。 「何コレ、動かないんだけど」とあなたが同僚に文句を伝えると、同僚はあなたに返します。 「こっちでは動いてるよ」 困りましたね。 あなたの手元には EXE のソースコードも無ければ、Visual Studio もありません
杏ちゃんはBANされたツーラーでも内部の人間でもありません!! 先日Twitterにて指摘したグランブルーファンタジーのステージング環境へアクセスが可能だった件についてまとめておきます。 (該当ツイートは削除済みのため画像を添付しておきます) ※ 注意 本記事中にはURLやIPアドレスが含まれます。 既に外部からのアクセスはできなくなっていますが、利用規約等を考慮しアクセスしないほうがいいと思います。 ステージング環境へのアクセス外部からのアクセスが確認できた環境は複数ありURLからおそらくステージング環境と思われます。 1. stg.game.granbluefantasy.jp 2. stgz.game.granbluefantasy.jp これらの環境は外部から「制限なく」「誰でも」アクセス可能な状態で公開されていました。 また、Googleにインデックス登録されており検索結果に表示
昨年の年の暮れ、ゲームを早くクリアするRTA(リアルタイムアタック)を披露するイベント「RTA in Japan 2019」が開催された。 本イベントでは多くのプレイヤーによってさまざまなゲームのタイムアタックが披露されたが、その中でひときわ異彩を放っていたのが、PlayStation用ソフト『ドラゴンクエストVII エデンの戦士たち』(以下、ドラクエ7)を4分でクリアするという試みだ。 (画像は RTA in Japan 2019: ドラゴンクエストVII エデンの戦士たち の0:08:33より) 『ドラクエ7』はさまざまなRPGの中でもクリアまで特に時間がかかることで有名だ。『ドラクエ』シリーズの中でも特に際立っており、普通にプレイするとシリーズおなじみのモンスターであるスライムと出会うまでに1時間はかかってしまうほどである。 当然、RTAでもかなりの時間が必要であり、『ドラクエ7』の
HTTPトリガーで動くCloud Functionsを, TypeScriptからトランスパイルしたコードを使って開発してみる. 更に, コードをローカル環境でデバッグしてGCPにデプロイしてみる. 今回は題材として, 下の記事で書いた機能をTypeScriptで書き直してみる. kourin.hatenadiary.com ローカルのOSはmacOS High Sierra10.13.4で, ターミナルはzshです. ngrokのインストール ngrokはlocalhostで動いているサーバに外部からアクセスするためにURLを発行してくれるツール. 今回はSlackからCloud Functionsの方にアクセスするため, このツールを使用してlocalhostにアクセスできるようにする. ngrokを使うと外部からアクセスできるようになるので, 使う時だけ起動するように.... 以下で
こんにちは、今年の4月から Quipper の iOS エンジニアになった @manicmaniac です。 ちょっと話題としてはニッチかもしれないのですが、今日は Apollo iOS client を利用したアプリで GraphQL のデバッグに苦労し、そしてコードを書いてそれを克服した話をします。 そもそも GraphQL とか Apollo ってなに? GraphQL とは Web API のクエリ言語であり、またそのランタイム自体を指す言葉です1。 対して、Apollo は GraphQL のサーバー・クライアント用のライブラリで、Meteor の開発元でもある Meteor Development Group 社が開発しています。 Apollo の iOS 向けクライアントである Apollo iOS は単なる API クライアントを超えて、以下のような機能を備えています。 G
はじめに Dockerであんなコンテナやこんなコンテナを動かしてると、なんかうまく動かなくて、デバッグのためにtcpdumpとかstraceなどのツールが使いたくなることが稀によくあります。 そんな時、デバッグ対象のコンテナ内にツールを一時的にインストールしちゃうというのが、まぁ簡単で分かりやすいんですが、デバッグ対象のコンテナを汚すのはできれば避けたいところです。 Dockerのコンテナの分離というのは、結局のところLinuxのリソースの名前空間の分離であるので、逆に同じ名前空間を共有すれば、デバッグ用に立てた隣のコンテナから、デバッグ対象のコンテナのネットワークやプロセスの状態を観察することも可能です。 また、docker buildはDockerfileを標準入力から受け取ることもできるので、ワンライナーにしてデバッグ用のコンテナをシュッと呼び出せるようにしてみました。 TL;DR
goでデバッグするときはdelveを使うことが多いと思う。 ユースケース別の起動方法をまとめた。 TL;DR 基本的な起動方法と簡単な操作方法(dlv debug/dlv test 環境変数を設定して起動する(Windows以外)(ENV=... dlv debug) 引数を渡して起動する(dlv debug --) 特定のテストケースを指定して起動する(dlv test -- -test.run) 起動済みのプロセスにアタッチして起動する(dlv attach) リモートから接続して起動する(dlv exec && dlv connect) 前提 まずはvimを起動する。(vim-goもdelveをサポートするようになりましたね。) …ではこの記事が閉じられそうなのでコマンドラインからDelveを使うことを前提とする。 この記事を読んでもわからないこと この記事では以下の内容については触
Kubernetes Meetup Tokyo #10 2018.03.08 https://k8sjp.connpass.com/event/76816/
概要 Goでデバッグをする際にdelveというツールがオススメです。 環境 golang v1.8.3 delve 1.0.0-rc.1 インストール brewでもインストールできますが、単体テストの実行の際に上手く動かないことがあったのでgo getの方をオススメします。 $ xcode-select --install $ go get -u github.com/derekparker/delve/cmd/dlv 通常の使い方 以下のコードに対して実行するとします。 func main() { a := Hoge("main") fmt.Println(a) } func Hoge(m string) string { hoge := "hoge" fuga := m + hoge + "fuga" return fuga } 起動 $ dlv debug hoge.go (dlv)
はじめに 本記事は、他人の書いたソフトウェアのバグに遭遇したときにどうするかという流れを、実例を基にして、ストーリー仕立てでなるべく具体的に書きました。このようなときの対処に不慣れな人に、実際のデバッグ、バグレポート、および修正案の提出までの流れを掴んでもらうことが目的です。 バグに遭遇 筆者も参加していたLinux Advent Calendar 2016に、ある日シェルスクリプト(Bash)で作るTwitterクライアントという記事が投稿されました。twitter APIの認証に使われているOAuth1.0aとshell芸に興味があったことより、この記事を読んでみることにしました。 そこで紹介されているtweet.shというbash製twitterクライアントを試そうとしたところ、出力は次のようになりました。 いきなり何かがおかしいです。自分のtwitterアカウントに関するJSON形
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く