Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Die hab ich noch nie gelesen aber ich hab sie gerade überflogen und ja da steht nix nützliches dafür drin ^^ Also ein neues Projekt Anlegen(ctrl+n oder File Menü), dann gibst dort Executable raus suchen, Working Directory sucht er sich selber aber wenn du z.B. ein unterschiedlichen build Ort hast musst den doch anpassen. Wenn du noch hast Command Line Arguments angeben, die mit an dein Binary übergeben werden sollen, dann gehst links in der Liste auf Debug und markerst je nach wie du deine GameLoop gebaut hast glClear, w/xglMakeCurrent oder SwapBuffers als Frame Termination. So weiß das Tool von wo bis wo ein Frame geht und kann entsprechend representieren. Ok Button drücken und nun gehst oben ins Debug Menü->Add/Remove Breakpoints und im Error/Warning Reiter packst beide OpenGL Möglichkeiten rüber.
Deprecated Function ist sämtlicher Code, extern, intern, der deprecated makiert wurde und in einer offline db von AMD liegt(z.B. die alten unsicheren Windows string API). Detect Error sucht generell nach Fehler im Prozess, also Exceptions(auch die abgefangen wurde), Treiber interne Fehlermeldungen, nicht behandelte Interrupts. Memory Leak und Redundant State Change sind selbst erklärend.
Wenn man keine AMD Karte hat, dann wird das Komplette OpenCL Paket deaktiviert, also profiling, debugging, Analyze. Dann gehst du Debug-Menü->BreakPoints->OpenGL Debug Output Extension Settings, welche die einzelnen möglichen Settings von der OpenGL API mappen aber auch noch logisch bei den werfen von jeweiliger Funktionsart unterscheidet. Also Reported Message Severities Error und Undefined sollten reichen. Dann sicher gehen, dass Debug-Mode aktive ist und dann starten.
Wenn nun was eintritt, dann bekommst ein Callstack(sofern debug symbole irgendwo rum liegen oder unter windows der visual studio debug-symbols service an ist), codestelle(sofern der code verfügbar ist) und natürlich den output.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Ob eine Datei startbar ist oder nicht, hängt nicht von ihrer Dateiendung ab. Ich vermute, dass sich CodeXL irgendwo in /opt/ installiert hat, kann das aber gerade nicht nachschauen.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Sudo hdupdate Locate CodeX Dann sollte einiges aufpoppen und da linux nix mit dem filesystem ordnern zu tun hat kocht in jeder distro sein eigenen ordner brei und daher kann man es einfach nicht sagen, ohne es auf der distro zu testen. Fedora, centos und ubuntu haben das icon mit im menü.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Windows only steht da, ungünstig unter debian. Scheint sich durch directx debugging ein zuschränken.
Vertex und fragment picking sowie debugging, sowie profiling können codexl und nvidia perfkit können das nur über eigene treiber, während d3d es per api anbietet. Hatte ich mal in pix gesehen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Sehr interessantes Programm, Sascha. Der GiHub-Seite zufolge auch für OpenGL 3.2+ und Linux. Für Linux allerdings (noch) ohne GUI. Werde ich auf jeden Fall mal im Auge behalten, da CodeXL leider des öfteren mal abstürzt, wenn man es bräuchte. Hat eigentlich jemand Erfahrungen mit Nvidia's Linux Graphics Debugger?
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Ob eine Datei startbar ist oder nicht, hängt nicht von ihrer Dateiendung ab. Ich vermute, dass sich CodeXL irgendwo in /opt/ installiert hat, kann das aber gerade nicht nachschauen.
So wie es aussieht, ist das deb-Archiv fehlerhaft. Ich habe jetzt das tar.gz Archiv geladen, dort hat es ein CodeXL zum ausführen.
Das Tool konnte ich jetzt wenigsten starten. Mal schauen, ob ich damit zu recht komme.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
TAK2004 hat geschrieben:
Windows only steht da, ungünstig unter debian. Scheint sich durch directx debugging ein zuschränken.
Es fehlt nur die fertige GUI. Im Repo gibts eine QT-GUI die dann Cross-Platform ist, die GUI braucht man auch nur um den Trace abzuspielen. Ist aber noch work-in-progress, aber trotzdem sollte man sich das Teil evtl. Bookmarken, da es auch Support für Vulkan bekommt.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Wenn du dein code noch durch codexl gejagt hast, dann wirst du erfahrungsgemäß einige programmierfehler im eigenem ubd femden code finden. Selbst glew hat ziemlich häftige fehler, weshalb ich ja davon weg bin. In der engine, die ich in mein letztem job gearbeitet hab waren auch diverse bugs und falsche nutzungswege und der code lief problemlos in einigen tech demos und games. Selbst perfkit hat nicht gemeckert, wo eindeutig die opengl api oder shader falsch waren(specs sollte man halt beachten). Amd ist unglaublich pedantisch, was es opengl treiber angeht. Das tool ist da gleich gerichtet aber läuft halt mit fremden cpus und gpus. Es frustriert und machbglücklich zugleich ^^
edit: Hier mal mein Code, um die höchst möglichen OpenGL Context zu bekommen und auch garantiert nicht falsch initialisiert wie die meisten Internet resourcen es sich gegenseiten abgucken. Ist tatsächlich ein ziemlich großes Problem, irgendwer hackt was zusammen, funktioniert und dann verbreitet es sich, dann sagt einem CodeXL(eigentlich mein AMD OpenGL Treiber) dass ich da bullshit mache und diverse Spec Seiten später kam dann das raus. Ich hab das schon einiges gesehen, wie z.B. die Abfrage der Version obwohl der Treiber nur 2.1 kann, weil die API schon als nicht Kern teilweise verfügbar war oder dann aus den Vendor String oder ähnliches Versionen abgeleitet werden oder man ogl3-4 Kern-Befehle sucht obwohl die immer 0 zurück geben sollten, wenn man kein 3 oder höher Kern bereits hat. Was z.B. erlaubt ist, ist wglCreateContextAttribsARB in einem OpenGL 1-2 Context ab zu fragen aber wird nur bei einem OpenGL 3 oder höheren Treiber was anderes als 0 zurück geben. Erst mit OpenGL5 soll es eine Möglichkeit geben, die nicht eine ARB Erweiterung braucht(und damit auch ein OpenGL 1-2 Context). Mal abwarten.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.