Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Software
>
Sequoia xcode zugriff lokales Netzwerk
Sequoia xcode zugriff lokales Netzwerk
Eba
02.05.25
14:31
Ich bin verzweifelt. Ich entwickle Software mit c++ und teste diese mit dem in Xcode enthaltenen Debugger.
Ich kann aber vom Debugger aus nicht auf das lokale Netzwerk zugreifen um mit dem MQTT Broker Daten auszutauschen, ich bekomme immer die Fehlermeldung
Error: No route to host
Die Aufrufe selbst mit "mosquitto_sub" funktionieren im Terminal einwandfrei.
Konnte schon jemand diese Problem lösen?
Für das Programm selbst sind die Freigaben erteilt, nur für Xcode lassen sich keine Freigaben erstellen.
Hilfreich?
0
Kommentare
Nebula
02.05.25
15:16
Hast du Xcode evtl. versehentlich verboten, auf das lokale Netz zuzugreifen? Siehe Systemeinstellung "Datenschutz & Sicherheit".
„»Wir waren schon immer schamlos darin, großartige Ideen zu stehlen.« – Steve Jobs“
Hilfreich?
+2
Marcel Bresink
02.05.25
15:19
Das sind viel zu wenig Informationen.
Mit "Freigabe" ist wahrscheinlich das Erteilen einer Sicherheitsbefugnis in den Systemeinstellungen gemeint? Und das Programm verwendet keine eigene App-Sandbox?
Wenn ja, dann sollte die Befugnis immer nur für die unterste nötige Ebene erteilt werden, also für das Programm selbst und nicht für Debugger oder gar Xcode.
Kann es sein, dass mehrere Exemplare des Programms gleichzeitig auf dem Computer vorhanden sind, also z.B. eine Debug- und eine Release-Version? In macOS gibt es seit vielen Jahren den Bug, dass die TCC-Sicherheitseinstellungen immer nur für 1 Exemplar eines Programms gelten, nicht für Kopien.
Ansonsten müsste man viel mehr über das Programm wissen, z.B. ob es eine Bundle-ID definiert und welche Zugriffsprotokolle es im Netzwerk braucht, bzw. über welches Identifikationsverfahren (MAC-Adresse, IP-Adresse, Domain-Name, etc.) der Erstkontakt läuft. Es gibt nicht wirklich eine Sperre für das lokale Netzwerk an sich, sondern nur für das
Suchen nach lokalen Netzwerkgeräten
, z.B. über Bonjour oder Multicast-DNS.
Hilfreich?
+3
Eba
02.05.25
23:49
Ich hatte den folgenreichen Fehler gemacht, auf Sequoia upzugraden, jetzt kann ich mein Programm nicht einmal debuggen, da keine lokalen Netzwerkverbindung erlaubt sind.
Ich suche auch nicht nach lokalen Netzwerkgeräten, die IP-Adressen z.B. des MQTT Brokers ist ja bekannt.
Hilfreich?
-4
Eba
03.05.25
00:36
Wenn ich das Programm direkt starte, funktioniert es, nur nicht im Debugger
Hilfreich?
0
ww
03.05.25
13:39
Eba
Ich hatte den folgenreichen Fehler gemacht, auf Sequoia upzugraden, jetzt kann ich mein Programm nicht einmal debuggen, da keine lokalen Netzwerkverbindung erlaubt sind.
Versuche doch die Fragen von Marcel zu beantworten.
Hilfreich?
+2
rmayergfx
03.05.25
15:27
Eba
Ich hatte den folgenreichen Fehler gemacht, auf Sequoia upzugraden, jetzt kann ich mein Programm nicht einmal debuggen, da keine lokalen Netzwerkverbindung erlaubt sind.
Ich suche auch nicht nach lokalen Netzwerkgeräten, die IP-Adressen z.B. des MQTT Brokers ist ja bekannt.
Klassischer Fehler. Warum testet man als Entwickler einer Software nicht vorher seine spätere Entwicklungsumgebung? Wenn es doch mit macOS Sonoma einwandfrei lief, warum dann das Update? Es gibt von Apple sogar eine Anleitung, mehrere macOS Versionen parallel auf einem System zu installieren:
https://support.apple.com/en-us/118282
. Gerade diese Möglichkeit sollte man als Entwickler nutzen um schnell und effizient arbeiten zu können.
Welche XCode Version ist denn überhaupt installiert? Schon mal die üblichen Problembehebungen durchgetestet? Funktioniert denn alles unter einem neu angelegten User mit administrativen Rechten?
https://www.donemax.com/mac-tips/fix-xcode-not-working-on-mac.html
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
Hilfreich?
+2
Marcel Bresink
03.05.25
15:34
rmayergfx
Es gibt von Apple sogar eine Anleitung, mehrere macOS Versionen parallel auf einem System zu installieren:
Man kann in der Regel auch mehrere Versionen von Xcode gleichzeitig installieren, ohne mehrere Betriebssysteme zu brauchen.
Aber nochmal die wichtigste Frage: Gibt es mehrere Exemplare des selbst entwickelten Programms auf dem Computer? Vielleicht auch in einer Klon-Datensicherung (also nicht in Time Machine)?
Hilfreich?
+2
Eba
04.05.25
15:10
Ich habe alle Kopien gelöscht (es gab nur eines). Nach dem Build kann ich das Programm direkt in einem Terminalfenster starten und funktioniert einwandfrei. Nur wenn ich es testen möchte und den Debugger in XCode nutze, gehen alle Zugriffe auf das lokale Netzwerk schief, Zugriffe auf das www funktionieren dagegen.
Ich mache seit 40 Jahren Softwarentwicklung, aber sowas ist mir in der Zeit nie passiert. Jetzt mache ich das nur noch im Privaten. Aber wenn ich eine neues Update einspiele, erwarte ich das es auch getestet ist.
Ich kann mir auch kaum vorstellen, dass ich der Einzige mit diesem Problem bin.
Hilfreich?
-6
rmayergfx
04.05.25
16:12
Deine Erwartungshaltung ist etwas zu hoch. Es gibt keine fehlerfreie Software, das solltest du doch als Softwarenetwickler wissen. Leider gehst du auch nicht auf die gestellten Fragen und Lösungsversuche ein, wie soll man dir dann noch weiterhelfen?
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
Hilfreich?
+2
Marcel Bresink
04.05.25
16:28
Eba
Nach dem Build kann ich das Programm direkt in einem Terminalfenster starten und funktioniert einwandfrei.
Hat das Programm eine grafische Oberfläche oder nicht, bzw. ist das Programm Hilfsprogramm eines Programms mit grafischer Oberfläche? Wenn nein, verhält es sich wie ein Hintergrunddienst (daemon), bzw. Befehlszeilenprogramm? Wenn ja, verwendet die grafische Umgebung den vorgeschriebenen Beschreibungseintrag "NSLocalNetworkUsageDescription"?
Es gibt in Sequoia neue Vorschriften, wie ein Programm beschaffen sein muss, damit es (a) automatisch oder (b) nach Genehmigung eines Benutzers bestimmte Ressourcen im lokalen Netz benutzen darf.
Hilfreich?
+1
Eba
04.05.25
18:09
Es handelt sich um ein Programm, das im Terminalfenster gestartet wird. Es hat also keine grafische Umgebung.
Es baut verschiedene Verbindungen z.B. zu MQTT auf. Das Programm im Terminalfenster gestartet, funktioniert einwandfrei. Da greift die Rechtevergabe.
Nur wenn ich es im Debugger von XCode starte, gehen die Systemaufrufe an das lokale Netzwerk fehl. Damit kann ich das Programm nicht mehr testen, wenn neue Funktionen implementiert werden soll. Meine iMac Entwicklungssystem ist damit unbrauchbar geworden.
Da der Debugger innerhalb von XCode abläuft gehe ich davon aus, dass XCode selbst für die lokalen Netzwerkverbindungen authorisiert sein muss. Leider kann ich XCode nicht selbst authorisieren. Es ist mir keine Möglichkeit bekannt wie ich das z.B. manuell machen könnte.
Hilfreich?
-2
Marcel Bresink
04.05.25
18:26
Eba
Es handelt sich um ein Programm, das im Terminalfenster gestartet wird. Es hat also keine grafische Umgebung.
Das hat nichts miteinander zu tun. Man kann Programme mit und ohne grafische Oberfläche über das Terminal starten.
Eba
Das Programm im Terminalfenster gestartet, funktioniert einwandfrei. Da greift die Rechtevergabe.
Nicht wirklich. Wenn ein Programm ohne grafische Oberfläche über das Terminal gestartet wird, erhält das Programm
automatisch
die Befugnis für lokalen Netzwerkzugriff.
Es ist zu vermuten, dass Dein Programm so gestaltet ist, dass macOS es beim Start außerhalb des Terminals nicht zuverlässig als Befehlszeilenprogramm erkennt und deshalb eine manuelle Bestätigung erforderlich ist, gleichzeitig aber die grafische Anfrage für diese Bestätigung nicht eingeblendet werden kann.
In dem Fall kannst Du versuchen, das Programm so zu übersetzen, dass
a) es eine zusätzliche "Info.plist" hat, in der zumindest ein CFBundleIdentifier (besser außerem auch CFBundle Name, CFBundleVersion, CFBundleShortVersionString und CFBundleInfoDictionaryVersion) und der Eintrag NSLocalNetworkUsageDescription mit einer Textbegründung für den Netzzugriff definiert ist,
b) über den Linker die Info-Datei als zusätzliches Textsegment mit dem Namen "__info_plist" in das Binary integrieren. Das geht mit einer Option nach dem Muster
-sectcreate __TEXT __info_plist Info.plist
Hilfreich?
+6
ela
04.05.25
20:37
Du bist nicht allein
Hilfreich?
-1
Eba
05.05.25
00:17
Beim ersten Starten des Programms im Debugger kam ein Fenster und ich habe die Berechtigung erteilt. Den Eintrag für mein Programm kann man auch in der Systemsteuerung finden.
Hilfreich?
0
rmayergfx
05.05.25
10:31
ela
Du bist nicht allein
Da geht es aber auch darum, das die Apps zwingend im Applications Folder sein müssen. Wo Eba seine selbst geschriebene App abgelegt hat und mit welcher XCode Version er arbeitet verschweigt er uns aber nach wie vor.
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
Hilfreich?
+1
deus-ex
05.05.25
13:43
Eba
Beim ersten Starten des Programms im Debugger kam ein Fenster und ich habe die Berechtigung erteilt. Den Eintrag für mein Programm kann man auch in der Systemsteuerung finden.
Das Problem ist, das mit jeder neu Kompilierung das Programm für macOS eine neues Programm ist und neu berechtigt werden muss. Ich weiß gar nicht wie man sowas dann zu konfigurieren hat.
Hilfreich?
0
ssb
05.05.25
22:28
Also mit meiner App für iOS/tvOS wird im Debugger (iPad Version) oder im Simulator nach der Erlaubnis gefragt. Das ist aber eine GUI-Anwendung - aber das sollte keinen Unterschied machen.
Was in die Info.plist bzw in die Entitlements rein muss, ist eben der „String“, mit dem die App beschreibt, warum sie auf das lokale Netzwerk zugreifen will. Der wird dann im Dialog angezeigt. Fehlt dieser Eintrag, dann wird nicht gefragt und der Zugriff verweigert.
In der Xcode Info.plist Project
Targets heißt das Feld „Privacy - Local Network Usage Description“. Wie du dem Linker sagst, die Info.plist einzubetten wurde schon erklärt. Bei der Gelegenheit solltest du dann auch die passenden „App Transport Security Settings“ eintragen.
Ist alles relativ gut von Apple dokumentiert - was inzwischen leider nicht mehr immer der Fall ist.
Wird die Anwendung im Debugger gestartet, dann werden diese Informationen genutzt. Aus dem Terminal heraus, werden die Rechtge vom Terminal geerbt. Das Terminal muss diese Berechtigungen haben, sonst würden viele Dinge wie Python-Skripte etc. nicht funktionieren.
Hilfreich?
+2
Kommentieren
Sie müssen sich
einloggen
, um sich an einer Diskussion beteiligen zu können.
Bewertung der gestrigen Neuvorstellungen – alte...
Kurz "Severance" könnte zwei Spin-offs erhalten...
John Gruber reagiert auf Apples Absage – "es st...
Bericht: watchOS mit neuem Design und Apple Int...
Kurz: WhatsApp erhält Nutzernamen +++ Apple akt...
Apple-Legende Bill Atkinson gestorben
Apple kann (etwas) aufatmen: Importzölle aus Ch...
macOS 15.5 ist erschienen