「ブレークポイント」を含む日記 RSS

はてなキーワード: ブレークポイントとは

2024-02-02

ワイ、プログラマー。前の会社に久々に顔を出したら寝食を削って書いたコードが後輩に無茶苦茶修正されてたか気持ち分かる。作品って我が子なんよ・・・

追記コメント笑うわw

ちなみにバグも潰れて気の利く修正になってました。でもだから余計に辛いんよ orz 関数の先頭にリターン文を置く修正意味わからんブレークポイント起きにくくなるだろ畜生め。スクロールして汚された関数を目にするたび心が死んでくのを感じた。

2022-04-28

xdebugが必ずindex.phpで止まる

とまるというか正確には、最初に出現する処理でブレークする

Eclipse の設定変えろみたいな記事しかググっても出てこないがvdebug使ってるからかんけーねーよみたいに思ってたら

break_on_open = 1

っていう設定がそれらしい。適当コピペして設定したせいでこんな動きになっていた

0にしたらちゃんブレークポイントまで処理が飛びます。やったね

2020-12-04

anond:20201204012300

クラスに関しては自分が老人だから異論はあるけど、

とりあえず動くソースコードでそれなりの規模のが欲しければGitHubからcloneしてくればいいんだよなあ。

と言っても、元増田が「gitって何?」のレベルだとそこで話が折れてしまい、

gitとは?バージョン管理とは?ハッシュ値とは?みたいになってしまうので説明する側も辛い。

自分説明される側でも説明する側でも辛いのは、それだけ専門性が高い分野ではあるのだろうけど。

自分だって自分の専門外のことをそれ専門の人にまくし立てられて説明されるの辛いw

ソフトウェア命名規則天邪鬼でなければ、スタート地点はmain.cppみたいに類推もできるはず。

その後はデバッグ情報付きでビルドして、

デバッガでメインルーチンからブレークポイント打つなりしてポチポチ動作させたり変数の中身の変化を確認していく。

あと、ソースコードコメントも参考になる。

色々なクラスとかソースコードを眺めて全体像を把握し、そこからコアとなる機能自分が知りたい箇所を目指す。

ソースコードがある、デバッグ情報があるなら、当たり前だが変数名や関数名があるので類推やすい。

Javaとかで難読化してると、逆コンパイルできても変数名や関数名は分からなくされていて読み辛かったりする。

いや、だから難読化なんだけどwでも、.classファイルしかなくてもそれで中の肝心のアルゴリズムは読めてしまったりする)

自分には大した技術はないと自分でも思ってるけど、普段やってることをまったく知らない人に説明するのは難しいだろうね。

というか、できる人やプロだって新しいビルド方法なんて分からない。

C++ならcmakeやpremakeは分かるけど、ninjaってなんじゃ?みたいなw

そこで新しい道具に手を出して躓くことも多々あるし、

他人他人自分の知らない道具、好きでない道具を使ってたりもするわけで、ビルドするために嫌々最低限即席で学んだりする。

そういう点でフロントエンドとかJavaScript界隈に流石についていけない、歳だなあと思ったり。

2020-11-14

よく書けてるソースを見つけたのでブレークポイント置いたりして眺めてたけど

結局なんだか面倒になってきて家事もせずに食べてるで

2020-09-20

今どきGTKプログラミングしたいときに最適な環境を調べた

ふと、C言語テトリスでも作りたいなぁ、GTKがいいなぁと思い、どの環境が一番適しているか調べてみたが

意外にもLinuxQt Creator&CMakeの組み合わせが最強であった。

WindowsMinGW)…pkg-configの出力がc:\msys2\mingwではなく/mingwになりIDEへのライブラリの設定に難儀するなど、何をするにもトラブる。

Qt Creator…CMakeでプロジェクトを作って読み込んだらビルド設定やインテリセンス、補完、デバッガがすべて完璧動作した。MakeFileプロジェクトでも、AutoToolsでも何でもうまく行く気がする。

Vim…めんどくさすぎる

・Anjuta…AutotoolsでGTKプロジェクトデフォルトサポートしていて何も設定が必要ないが、

     ウィンドウの縦分割ができない、ブレークポイントの設定がマウスで出来ない、定義への移動のショートカットデフォルトで設定されてないなどつらすぎる場面が多い

・Geany…補完をするのにctagsコマンド辞書ファイル作成する必要がある。このことから補完以外でもマトモな支援は期待できなそう

Eclipseビルドツールの設定に難あり。依存ライブラリの追加が一個ずつしか出来ない。"."や"::"を入力するか、Ctrl+Spaceを押さないと補完が出てこない。

VSCODE…これもほぼ完璧ビルド設定やインテリセンス、補完、デバッガが設定された。

2020-09-05

anond:20200905202028

英単語理解してるの?

できないなら結構やばいが、しばらくは自動翻訳しながら矯正していくしかないな・・・

他人コードを読むのは結構慣れと体力が必要技術力が低い組織ほど難易度が上がるから経験が低い人ほど余計に難しいな。

最初のうちはしばらくブレークポイントを起きまくって処理フローを把握していくしかいかもな

2019-06-08

anond:20190608172132

以前は無償版を使っていたのですが何か足りなくて、有償版に変えた記憶がある。

web系の仕事をしているのだがなんだったかな…

関数ジャンプだったかブレークポイントサーバーサイド)の機能だったかもっと他の機能だったか

2018-10-15

anond:20181015215004

とりあえず、声をあげてたほうが良いと思うよ。

要は、アラートをあげていましたよ、ってことね。

期日に成果物が全くありません、っていう状況だけは、絶対に避けたほうが良い。後で問題が発生した時に、責任問題になる。

上司相談して、それでダメなのが現状なんだろうけど、全体にチャットツールなりメリングリストなりで、相談する。

もしくは、さらに上の人間に対して、現状こうなので自分放置したままだと炎上しますよ、と伝えておく、とかかな。

素人レベル自分だけれどプログラム側で、言うとしたら、

  • 小さく作る。小さく修正する。小さく確認する。

あたりかな。完全に自分視点なので、元増田には合わないかもしれない。

あと、質問の時は出来る範囲でいいんで、ちょっと10~15分くらい)調べて、自分なりに答えなり推測なりを出したうえで、

『〇〇が分かりません。△△△を調べました。自分□□□だと考えています』みたいな感じで聞いてくれると、自分だと教えやすい。

 

最後に、頑張らないこと。無理をしないこと。自分を責めないこと。他の人も言ってるけど、自分もその仕事先が悪いと思う。

完全に無責任位置から発言から、話半分で聞いてください。

2016-05-01

コーディングで詰まった時の振る舞い

コーディングで詰まった時、どうすれば良いのかということを知りたいです

詰まった時というのは、デバッグがうまくいかない時、サーバがなぜか意図した動作をしてくれない時、新しい道具を使おうとしたけどなぜか動かない時、などなどそういうやつです。

自分は他のプログラマ比較してもそういう場面に直面する回数が多いと思っていて、そういう状況を最短路で打開するための行動指針や考え方の指標が欲しいと思っています

すでに行っていることは、

のような行動です。

ですがこれらをやっていると時間がどんどん消えていって、夜始めたコーディングが朝になっていたりするので、どうにかしてもっと時間で解決できるようになりたい。

直感としては、使用しているツールいまいちというよりも、直面した問題をどう考えれば良いのかわからないせいで時間がかかっているような気がしています

みなさんはデバッグ作業の際、どういうふうに検討を立てていますか?

また、こういうことについて書かれている書籍ブログ記事があれば教えてほしいです。

2014-09-05

http://anond.hatelabo.jp/20140904234704

基本的に↓の情報が全てだね。


http://officetanaka.net/excel/vba/tips/

http://www.happy2-island.com/excelsmile/smile03/

http://msdn.microsoft.com/ja-jp/library/office/ff194068%28v=office.15%29.aspx


直接欲しい答えが載ってなけりゃ、クラス名/プロパティ名/メソッド名やメソッド引数戻り値の型から仮説を立てて、コード書いて、ブレークポイントオブジェクトの中身見て動作を確認して覚えていくしかないと思うよ。何やろうとしてるか分からないけど、Workbooks、Workbook、WorkSheets、WorkSheet、Range、Cells…等のクラス仕様を詳しく理解するのが一番だと思う。

VBAに関しては、詳しい人に聞いて理解しようと思うのはやめた方がいい。

そんな人いないから

2014-08-12

http://anond.hatelabo.jp/20140812112643

あの なんというか。

 

if( bool ){
  function();
}

ってね。

if( bool ) function();

ってかけるんだけど

第3者がデバッグしている時に

function();にブレークポイントを当てたい時に、わざわざコードをチェックアウトして改変しろというのか?

という話と = (デバッガーの効率を考えてくれ)

 

第3者が

if( bool ){
  function();
  function2();
}

と したい時に、 {}つけるのか?という話題。

変なふうに コード管理に diffが 残るんですけど・・・という。

function();変えてないのに 変えたことになっちゃうんだよね。

 

それが 私が{}をつけろと思う理由。

if (bool ) funtion が 他の第3者に対して 常に1行である保証できないでしょ。

というはなし。

その時だけ良ければ、それでいいんだけど、長く他人コードを面倒見てると

if(bool) function()

というコードイラッと来ることが多いから

if(bool) {
 function() 
}

としておいてくれると助かると。

宗教論争だからどっちでもいいけどね。

2013-03-23

プロテクト強化後のもふったーも予想以上に酷かった件(追記あり)

ことのあらまし
  1. Twitterクライアントもふったーの作者「TweetDeckのconsumer secret簡単に抜ける、終わってる」(http://blog.livedoor.jp/blackwingcat/archives/1760823.html)
  2. 別の誰か「もふったーのconsumer secretも簡単に抜ける」(http://d.hatena.ne.jp/kusano_k/20130318/1363640368)
  3. もふったーの作者「プロテクト強化した」(http://blog.livedoor.jp/blackwingcat/archives/1762970.html)

プロテクトかけたアルゴリズムを実装したバージョン差し替え」たなんて言われると本当に「プロテクト」がかかっているのか確かめてみたくなるのが人情というもの。というわけで、プロテクト強化後のもふったー(v0.9.6b)からconsumer secretが抜けるか試してみた。結論から言うと、あっけなく取り出せた。以下に手順を記す。

手順

動作がよくわかっていないアプリケーションを解析して仕様を明らかにすることをリバースエンジニアリングと呼ぶ。ソフトウェアリバースエンジニアリングは基本的に対象を逆アセンブルしてひたすら読むことによって行う(その補助に1命令ずつ実行してレジスターやメモリーの様子を観察することもある)。しかし、よっぽど小規模なものでなければオブジェクトコード全体を逆アセンブルして最初から最後まで読むなんてのは不可能だ。人間の読速度には限界があるし、時間も有限だからだ。そして、詳しい動作を知りたい部分というのは全体のごく一部であることが多いので全逆アセンブリを読むのには非常に無駄が多い。

からリバースエンジニアリングはいかに詳らかにすべき動作を行っているコードを絞り込むか(=読むべき逆アセンブリを少なくするか)が重要になる。

この場合も同様だ。TwitterGUIクライアントを頭から読むのは到底無理なので、どうやって解析すべきコードの範囲を狭めるかを考えた。それにはOAuth認証においてconsumer secretがどのような役割を果たすのかを知る必要がある。

OAuth認証で、consumer secretはそのままサーバーに送信されたりはしない。signatureの生成にHMAC-SHA1が使われ、その鍵にconsumer secretが使われる。HMACは次のように算出される。

HMAC (K,m) = H ((K ⊕ opad) ∥ H ((K ⊕ ipad) ∥ m))

ここで

である

まずはこのあたりから攻めようと思った。SHA-1計算はいくつか特徴的な定数が使われるので、そこからSHA-1計算に使われているであろう関数444190を特定する。この関数エントリーポイントに中断点(ブレークポイント)を設定してOAuth認証をさせるべくもふったーの「ブラウザ認証ボタンを押す。狙い通り中断するので関数を抜けるまで実行する。関数401100の4012DAに出た。少し下を見るとこのようになっている。

CPU Disasm
Address   Hex dump          Command                                      Comments
00401311  |.  33F6          xor     esi, esi
00401313  |   8D8C24 A40000 /lea     ecx, [local.54]
0040131A  |.  394C24 14     |cmp     dword ptr ss:[local.90], ecx
0040131E  |.  75 0E         |jne     short 0040132E
00401320  |.  3BF5          |cmp     esi, ebp
00401322  |.  73 29         |jae     short 0040134D
00401324  |.  0FB68434 A400 |movzx   eax, byte ptr ss:[esi+esp+0A4]
0040132C  |.  EB 21         |jmp     short 0040134F
0040132E  |   3BF5          |cmp     esi, ebp
00401330  |.  73 1B         |jae     short 0040134D
00401332  |.  8B5424 18     |mov     edx, dword ptr ss:[local.89]
00401336  |.  52            |push    edx                                 ; /Arg1 =  [LOCAL.89]
00401337  |.  8D8C24 FC0000 |lea     ecx, [local.33]                     ; |
0040133E  |.  8BD6          |mov     edx, esi                            ; |
00401340  |.  E8 CB4D0000   |call    00406110                            ; \mofooter.00406110
00401345  |.  83C4 04       |add     esp, 4
00401348  |.  0FB6C0        |movzx   eax, al
0040134B  |.  EB 02         |jmp     short 0040134F
0040134D  |   33C0          |xor     eax, eax
0040134F  |   34 5C         |xor     al, 5C
00401351  |.  888434 B80000 |mov     byte ptr ss:[esi+esp+0B8], al
00401358  |.  83C6 01       |add     esi, 1
0040135B  |.  83FE 40       |cmp     esi, 40
0040135E  |.^ 72 B3         \jb      short 00401313
00401360  |.  895C24 3C     mov     dword ptr ss:[local.80], ebx
0040134F  |   34 5C         |xor     al, 5C

が注意を引く。もしかしてこれはopadとのxorではないか?

00401351  |.  888434 B80000 |mov     byte ptr ss:[esi+esp+0B8], al

xorした結果を格納している。

先ほどの中断点は無効化しこのループを抜けた地点である401360まで飛ばす。この時点でesp+0B8を見ると次のようになっている。

Hex dump
64 2E 16 64|37 04 32 6D|0F 0D 26 29|3A 37 1F 2F|
18 69 6E 6E|0D 25 29 33|11 34 29 69|12 36 24 1E|
05 16 33 6A|04 3B 0E 68|7A 5C 5C 5C|5C 5C 5C 5C|
5C 5C 5C 5C|5C 5C 5C 5C|5C 5C 5C 5C|5C 5C 5C 5C|

あとはこれと5Cとをxorすればconsumer secretが手に入る。終わり。

追伸

はてな増田スーパーpre記法で半角の<>が含まれていると投稿が出来ないのを早く直してください。

3/23 18:45追記

もふったーの作者から反応があった。「本気だったつもりのもふったーのデバッグ処理が残ってた」らしい(http://blog.livedoor.jp/blackwingcat/archives/1763951.html)。修正したとのことなので最新版(v0.9.6e)を見てみた。確かに若干変更されているが何の問題もない。SHA-1の呼び出しに中断点を設置して渡されているバイト列を見るだけ。

CPU Disasm
Address   Hex dump          Command                                  Comments
00401324  |.  8D4424 20     |lea     eax, [local.102]
00401328  |.  50            |push    eax                             ; /Arg1 = 
00401329  |.  E8 623A0400   |call    00444D90                        ; \mofooter.00444D90

ここでeaxが指すメモリーを見ると以下のようになっている。

01 23 45 67|89 AB CD EF|FE DC BA 98|76 54 32 10|
F0 E1 D2 C3|00 02 00 00|00 00 00 00|40 00 00 00|
40 4F 73 53|62 54 5C 7E|59 57 53 42|55 45 7A 57|
61 47 7A 5B|42 4F 7B 61|5D 66 5E 7A|42 7F 40 63|
79 66 05 55|79 4C 60 42|02 10 36 36|36 36 36 36|
36 36 36 36|36 36 36 36|36 36 36 36|36 36 36 36|

先頭32バイトゴミ無視して0x36とxorすればconsumer secretが得られる。

2009-10-27

http://anond.hatelabo.jp/20091027124000

山手線に沿って、動く歩道を作ればおk。で、時々ブレークポイントを設置して、注意喚起と乗り降りを行う。

急ぎたい人は動く歩道の上でも歩くから、健康にも良い。

2009-02-22

http://anond.hatelabo.jp/20090222122135

ふむ

そういう風にバグ探さないから感覚がわからないなぁ

全く無いとは言わないけど半年に一度あるか無いかくらいか

だからその度に正規表現の文法思い出すのも面倒臭いし

hoge(のある行全てにブレークポイントを置くって機能なら欲しいこともあるけど

無ければ無いでやりようはあるが、手間が省ける、だから、逆に知らなければ知らないで良い

言いたいことはわかるんだけど、

正規表現だとかゆいところに手が届かないというか

他のツールの方が便利だったりするってイメージなんだよね

使いこなしていないからかも知れないけど

 
ログイン ユーザー登録
ようこそ ゲスト さん