{"id":13901398,"url":"https://github.com/electron/symbol-server","last_synced_at":"2025-10-19T16:32:57.752Z","repository":{"id":34943925,"uuid":"153691458","full_name":"electron/symbol-server","owner":"electron","description":"Electron symbol server","archived":false,"fork":false,"pushed_at":"2024-04-25T01:44:54.000Z","size":43,"stargazers_count":18,"open_issues_count":2,"forks_count":11,"subscribers_count":52,"default_branch":"main","last_synced_at":"2024-10-29T17:15:28.905Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://symbols.electronjs.org/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/electron.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-18T21:46:33.000Z","updated_at":"2024-09-09T22:47:56.000Z","dependencies_parsed_at":"2023-02-19T19:35:14.334Z","dependency_job_id":"23c31d6b-dfa3-43aa-851f-f242126432fe","html_url":"https://github.com/electron/symbol-server","commit_stats":{"total_commits":48,"total_committers":13,"mean_commits":"3.6923076923076925","dds":0.6875,"last_synced_commit":"72c4116368bd8f568144ad55db42943f4e026fab"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electron%2Fsymbol-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electron%2Fsymbol-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electron%2Fsymbol-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/electron%2Fsymbol-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/electron","download_url":"https://codeload.github.com/electron/symbol-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237172234,"owners_count":19266635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-06T21:01:20.295Z","updated_at":"2025-10-19T16:32:52.356Z","avatar_url":"https://github.com/electron.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Pepto Symbol\n\nPepto Symbol lets you use [S3](http://aws.amazon.com/s3/) as a [Windows symbol server](https://learn.microsoft.com/en-us/windows/win32/debug/symbol-servers-and-symbol-stores) for debugging Windows-based applications.\n\n### Wait, what's a symbol server?\n\n\"Symbol files\" (aka PDB files) contain information about your software that a debugger can use to show you backtraces, local variables, etc. They are generated by the compiler when you build your software. Debugging is a nightmare without symbols. Really.\n\nA \"symbol server\" hosts symbol files for Windows-based software. Debuggers use symbol servers to obtain symbol files for the software you're debugging automatically. John Robbins has written [a great article explaining all of this](https://www.atmosera.com/blog/pdb-files-what-every-developer-must-know/) and more on his blog. Symbol servers can serve symbol files over HTTP or a Windows file share.\n\n### That doesn't sound so hard. Why do I need this?\n\n`symstore.exe`, which creates the directory structure that the symbol server serves, and `symsrv.dll`, which implements the logic for retrieving symbols from a symbol server, operate case-insensitively (like much Windows software). This means that `symsrv.dll` might ask for symbols using a URL that uses uppercase where `symstore.exe` used lowercase, or vice versa.\n\nMany web servers treat URLs case-insensitively. S3 does not. So one job of Pepto Symbol is to provide case-insensitive access to symbol files stored on S3.\n\nIn addition, if you try to access a file that doesn't exist on S3, you will get a [403 Forbidden](http://en.wikipedia.org/wiki/HTTP_403) error, rather than [404 Not Found](http://en.wikipedia.org/wiki/HTTP_404). When `symsrv.dll` gets a 403 error from a symbol server, it blacklists that server for the rest of the debugging session. So Pepto Symbol also converts 403 errors to 404 errors.\n\n## Requirements\n\n1. You must **use all-lowercase keys** when uploading your symbols to S3.\n2. You need a server on which Pepto Symbol can run as an HTTP proxy.\n\n## Usage\n\nLet's say you've uploaded your symbols (using lowercased keys, remember!) to `http://my-bucket.s3.amazonaws.com/awesome/symbols`, and that you're going to deploy Pepto Symbol to `http://pepto-symbol.gadgetron.com/`.\n\nFirst, deploy Pepto Symbol to a server. Pepto Symbol comes preconfigured for deployment on [Heroku](http://www.heroku.com/):\n\n```shell\nheroku create --stack cedar\nheroku config:add S3_BUCKET=my-bucket\ngit push heroku master\n```\n\n(It should be fairly simple to deploy it elsewhere if needed.)\n\nNext, add the following URL to your symbol path:\n\n```\nhttp://pepto-symbol.gadgetron.com/awesome/symbols\n```\n\nThat's it!\n\n### Path Prefix\n\nYou can add an optional `PATH_PREFIX` environment variables for shorter URLs.\nThis prefix will be prepended to all requests paths to the S3 bucket.\n\n```shell\nheroku config:add PATH_PREFIX=/awesome/symbols\n```\n\nNow the symbol server URL can be `http://pepto-symbol.gadgetron.com`.\n\n### Running locally\n\nTo run Pepto Symbol locally on port 5000:\n\n```shell\necho S3_BUCKET=my-bucket \u003e .env\nforeman start\n```\n\n## Source\n\nPepto Symbol's Git repository is available on GitHub, and can be browsed at \u003chttps://github.com/aroben/pepto-symbol\u003e. You can clone the repository with this command:\n\n```shell\ngit clone https://github.com/aroben/pepto-symbol\n```\n\n### Contributing\n\nIf you'd like to hack on Pepto Symbol, follow these instructions:\n\n1. Fork the project to your own account\n2. Clone down your fork\n3. Create a thoughtfully named topic branch to contain your change\n4. Hack away\n5. If you are adding new functionality, document it in README.md\n6. Do not change the version number, I will do that on my end\n7. If necessary, rebase your commits into logical chunks, without errors\n8. Push the branch up to GitHub\n9. Send a pull request for your branch\n\n## Copyright\n\nCopyright (c) 2012 Adam Roben. See the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felectron%2Fsymbol-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felectron%2Fsymbol-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felectron%2Fsymbol-server/lists"}