Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

25.06.2014, 15:04

MSVC Debug DLL ohne Source Code preiszugeben

Hi,
mir ist eben beim Debuggen aufgefallen, dass bei einer MSVC Debug DLL immer der komplette Source Code in der DLL ist,
damit man auch bei externer Nutzung durch den kompletten Code steppen kann.
Wie kann ich eine Debug DLL bauen, ohne den Source Code mitzuliefen, damit ich auch Closed-Source Projekte in Debug Versionen ausliefern kann?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

25.06.2014, 15:07

Wo liegt denn aus Deiner Sicht der Unterschied zwischen einer Debug- und einer Release-Version?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

3

25.06.2014, 15:28

Wo liegt denn aus Deiner Sicht der Unterschied zwischen einer Debug- und einer Release-Version?

Naja der Unteschied dürfte doch offensichtlich sein:
Die Debug Version nimmt keine Optimierungen vor, der Source-Code wird in die Debug Version eingearbeitet, damit man Breakpoints setzen und durch den Code steppen kann.
Die Release Version nimmt Optimierungen vor, der Source-Code ist nicht mehr vorhanden und Breakpoints können daher nicht mehr berücksichtigt werden.

JustSid

Frischling

Beiträge: 54

Beruf: Lead Idiot

  • Private Nachricht senden

4

25.06.2014, 15:31

Die debug Symbole kommen aus der pdb, nicht aus der DLL. Optimierungen sind übrigens kein Ausschlusskriterium für debug Symbole.
Jabberwock is killing user

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

25.06.2014, 15:57

Die Debug Version nimmt keine Optimierungen vor, der Source-Code wird in die Debug Version eingearbeitet, damit man Breakpoints setzen und durch den Code steppen kann.
Die Release Version nimmt Optimierungen vor, der Source-Code ist nicht mehr vorhanden und Breakpoints können daher nicht mehr berücksichtigt werden.
Was ist dann also eine Programm-Version ohne Source-Code? :rolleyes: Das ist doch das, was Du willst, sofern ich Dich richtig verstanden habe.

Aus meiner Sicht ist eine Debug-Version eine Version, die sich debuggen lässt - somit also Source-Code enthält. Nicht mehr und nicht weniger.
Eine Release-Version kann auch ohne Optimierungen erstellt werden. Wenn das Dein Ziel ist, dann ist das einfach nur eine Option, die Du in den Projekt-Einstellungen ändern musst. Und schon hast Du Deine Anfangsfrage selbst beantwortet.

Allerdings sehe ich den Vorteil nicht. Man hat eine unperformante Bibliothek, die man nicht debuggen kann. Alle Nachteile auf einem Haufen.

@JustSid: Afaik kann die PDB aber auch eingebettet sein. Dann wäre der Source-Code in der DLL enthalten. Man kann hier natürlich auch einstellen, dass man sie nicht einbetten will und liefert sie nicht mit aus.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (25.06.2014, 16:02)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

25.06.2014, 16:28

Weder ein Release noch ein Debug Build enthalten Source Code, zumindest wenn wir von MSVC reden, nichtmal die Symbolinformation wird dort direkt in der Binary gespeichert, sondern in der .pdb. Und Symbolinformation enthält normalerweise keinen Source Code, sondern lediglich die Informationen, die nötig sind, um Imageadressen auf den Source Code abzubilden und umgekehrt... ;)

Versuch doch mal, deine .exe oder .dll auf einem anderen Rechner zu debuggen, auf dem der entsprechende Source Code nicht verfügbar ist... ;)

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (25.06.2014, 16:43)


Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

7

25.06.2014, 16:44

Warum sollte man eine Debugversion veröffentlichen aber den Quellcode nicht einsehen dürfen? Debuggen kann man ohne ja nämlich nicht. Genau das willst du ja verhindern.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

25.06.2014, 18:42

Klar kann man ohne Quellcode debuggen und nur Symbolinformation allein ist da praktisch das nächstbeste nach Symbolinformation + Source Code. Microsoft beispielsweise hat genau aus diesem Grund einen Symbol Server, von dem jeder jederzeit Debugsymbole für alle möglichen Systemkomponenten etc. beziehen kann... ;)

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (25.06.2014, 18:50)


JustSid

Frischling

Beiträge: 54

Beruf: Lead Idiot

  • Private Nachricht senden

9

25.06.2014, 19:24

Warum sollte man eine Debugversion veröffentlichen aber den Quellcode nicht einsehen dürfen? Debuggen kann man ohne ja nämlich nicht. Genau das willst du ja verhindern.

ABI inkompatible runtimes. Muss ja nicht seine DLL sein die gedebugged wird, kann ja auch einfach nur für die host .exe oder andere DLLs sein.

@BlueCobold: Sicher? Es wäre mir neu das PE ein Segment dafür hat, aber so wirklich Ahnung hab ich auch nur von mach-o und ELF. Wie auch immer, wenn es das gibt, ist es definitiv nicht bei default an in einem VSC++ Projekt.
Jabberwock is killing user

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

25.06.2014, 20:05

Es wäre ja auch nur eine stinknormale Ressource. Ich dachte das geht. Oder es ging mal. Ich lasse mich hier aber auch korrigieren.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige