OpenGL関数呼び出しによってGL_NO_ERROR
以外の状態が設定されたときにトリガするシンボリックブレークポイントを設定する方法はありますか?最初の証拠によると、opengl_error_break
はその目的だけに役立つことを意図していますが、壊れません。Xcode 4のOpenGLエラーでブレークポイントを起動できますか?
答えて
Larsのアプローチに基づいて、このエラーの追跡を自動的に行うことができます。これは、いくつかのプリプロセッサマジックとスタブ関数の生成に基づいています。
私はOpenGLヘッダーを処理する小さなPython scriptを書きました(この例ではMac OS Xを使用しましたが、iOSでも動作するはずです)。
が#include "gl_debug_overwrites.h"
ヘッダが後マクロや関数の宣言が含まれています:あなたはこのようにOpenGLを呼び出します(あなたが欲しいしかし、ヘッダに名前を付けることができます)どこ
ザ・Pythonスクリプトは、どこでも、あなたのプロジェクトに含めるために、2つのファイル、a headerを生成し、この方式:
#define glGenLists _gl_debug_error_glGenLists
GLuint _gl_debug_error_glGenLists(GLsizei range);
スクリプトはまた、あなたが、個別に保存してコンパイルして、プロジェクトにリンクする必要があり、同じストリームにsource fileを生成します。
そして、これは、このようなエラーをチェック_gl_debug_error_
が付いている別の関数内のすべてのgl*
の機能をラップします:
GLuint _gl_debug_error_glGenLists(GLsizei range) {
GLuint var = glGenLists(range);
CHECK_GL_ERROR();
return var;
}
クールなもの! @MattWilding:私はTorstenが私よりも恩恵に値すると思う。これが可能ならば変更してください! –
@LarsSchneider、24時間が切れたので、永遠にあなたのものです。私ができることは、緑色のチェックマークを動かすことです。両方のおかげであなたの入力。 –
XcodeでこのPythonスクリプトをどのように使用しますか? – Jonny
問題を解決するには、capture OpenGL ES Frames(「OpenGL ESフレームをキャプチャ」までスクロールする)が、Xcodeでサポートされていると思います。少なくともこれが私のOpenGLゲームのデバッグ方法です。
エラーが発生していることがわかったときにフレームをキャプチャすることで、あまり努力することなくOpenGLスタックの問題を特定できます。
希望すると助かります!
ええ、キャプチャフレームは非常にクールな機能であり、私はそれを広く使用しています。残念ながら、私はまずOpenGLがエラー状態になっていることに気づき、その後手動でフレームをキャプチャしてから、フレームを呼び出してエラーを特定してください。それは動作しますが、私は本当に自動的に壊れてしまいます。それは私にしばらく時間を節約し、それが可能であるように思われる。御時間ありがとうございます。 –
ええ、私はそれを自動的にやりたいと思っています... Xcodeで可能かどうかは分かりません。 – Goles
デバッグモードで呼び出すたびにOpenGL呼び出しを呼び出してglGetError
にラップします。ラッパーメソッド内で、条件付きブレークポイントを作成し、glGetError
の戻り値がGL_NO_ERROR
と異なるものであるかどうかを確認します。
詳細:
(OolongEngineプロジェクトから)プロジェクトにこのマクロを追加します。すべてのあなたのOpenGLのための
#define CHECK_GL_ERROR() ({ GLenum __error = glGetError(); if(__error) printf("OpenGL error 0x%04X in %s\n", __error, __FUNCTION__); (__error ? NO : YES); })
検索は手動で、または適切な正規表現で呼び出します。
glDebugViewport(...);
とコールを交換し、(1)に示すようにglDebugViewport
を実装glViewport(...); CHECK_GL_ERROR()
- で呼び出しを置き換えます。そして、あなたは
glViewport()
呼び出しに示された典型的な2つのオプションがあります。
これは確かにうまくいくでしょうが、条件付きでコンパイルされた 'glGetError'呼び出しをどこにでも振りかける大規模なプロジェクトに戻ってきて、まさに私がしたくないものです。私はちょうど打ち破ることができるシンボルがないことに驚いています。 –
- 1. NSTask起動パスにアクセスできません。 Xcodeで動作します。 Xcodeのエラーが表示されます
- 2. xcodeのデバイスでブレークポイントでデバッグが停止しない4
- 3. ブレークポイントが起動しない
- 4. Xcode、プロジェクトから「起動イメージ」を削除できません
- 5. Ms Visual StudioのC++エラー:「Windowsがjavaw.exeでブレークポイントを起動しました」
- 6. xCode 4.4でコンソールアプリを起動できませんでした。
- 7. ソフトウェアエミュレーションモードでOpenGLを起動するには?
- 8. XCode 4でエラーをリンクする
- 9. Xcode 4 NSURLエラー
- 10. Xcode 4の起動に失敗しました
- 11. Eclipseエラーで複数のMIDletを起動できませんか?
- 12. xcodeでビルドプロセスを自動化する4
- 13. どのリアルタイムC++オーディオライブラリがXcode 4で動作しますか?
- 14. Xcode 3とXcode 4の両方のプレビュー6をインストールできますか?
- 15. xCodeで、iPad Proを起動してもまだ768x1004pxモードで起動する
- 16. Xcode 4.3.2 IBActionボタンスレッド1:ブレークポイント1.1エラー
- 17. Smart Appバナーは、Xcodeからインストールされたアプリを起動できますか?
- 18. Xcode 4 mach-oエラー
- 19. Xcode 5はエラーでアプリケーションを起動できません: '/path/to/.app'を起動できませんでした - Busy
- 20. シミュレータを起動できませんxcode 7.3.1/OS 10.11.6
- 21. Xcode 4 "/ Developer"ディレクトリは12 GBです。クリーンアップできますか?
- 22. pry-byebugのブレークポイントはコンソールでは起動しません
- 23. XCodeでブレークポイントを削除する方法
- 24. Spring起動時に "new SilentExitException()"をスローするときのブレークポイント
- 25. Swift 4 launchProcessの起動パスにアクセスできない
- 26. Xcode 4でショートカットレコーダーが動作する
- 27. iOS SimimulatorエラーDTAssetProviderServiceが起動できず、再起動できませんでした
- 28. Xcodeの4エラーSDKのauthorize.net
- 29. アクティビティComponentInfoを起動できません。アンドロイドからのエラーN
- 30. Xcodeのデフォルトエディタを起動します
あなたがエラーを監視し3つのフレーム毎かそこらを発射背景NSTimerを作成することができますコードを作成し、例外をスローするか、ブレークポイントを持つようにしてください。 –
それはすぐに私にエラー状態を警告するのに近いでしょうが、主な目的は、エラー時にコールスタックを与えて、問題のコールを簡単に追跡できるようにすることです。 –
参考のため、コードは機能していないようです。私は私のものを巻いた:https://gist.github.com/3352303 – Eonil